邪罗刹的菠萝阁


> 每天一大早,小邪就想,淫荡的一天开始了 ╮(╯▽╰)╭,果然没有超出小邪的预料,哇咔咔。
> 今天是一个淫荡的星期四。上午,小邪很开心,因为小邪的杯具送到了,很帅的杯具。

> 但是下午,小邪自己变成了杯具,o(╯□╰)o。因为小邪的弟弟有危险了 ( ⊙o⊙ )!
> 起因是 Nox619 在准备创建一个高调的神秘组织,让我们一起用力地往下面看,嘎嘎。

一. 不是一般淫荡的一:

> (= 0 =),刚才小邪在转悠,然后在 Nox 博客上面受精了,(- -+)。
> 见鬼,破输入法,不改算了,小邪都习惯了,实际上小邪想说的是受惊了。
> 让咱们继续讲这个事儿,话说 Nox 和 万戈兄 想弹小邪的鸡鸡,o(>﹏<)o。

> (- -||),杯具啊,小邪仰天长叹:“杯具啊 ~ 天大的杯具 ~ (>_<) ~”。

> Nox 扬言,如果小邪透露了他们要建立一个同志会的内幕的话,就要折磨小邪的弟弟。
> 万戈兄 说了,“我要T小邪JJ,T到他说为止,HIA~HIA~HIA”。
> 天哪,小邪要怎么办呐,谁给小邪送一个最新版的 “要你命3000”,让小邪得以继续繁衍。

> 啊哦,貌似刚刚小邪心中为自己的弟弟在担忧,结果不小心手一抖,多打了几个字。
> 大家无视他们就好了。你没看见,你没看见,你一定没看见,对吧对吧。

> 小邪手又开始抖了,心中充满鸟恐惧 ( ⊙o⊙ )。光明在哪儿,啊,小邪的眼前一片漆黑。
> 对了,这个组织和最近的活动有关,域名也和最近的活动有关,看看谁能猜到喔 O(∩_∩)O。

> 原文章围观传送门 - http://imn.im/20100106225707.html

二. 小邪的杯具:

> 话说,上次小邪参加了河蟹娱乐主办的迎圣诞免运费盖楼送杯具活动,O(∩_∩)O。
> 结果灰常幸运地得到了奖励,小邪很喜欢呢 (*^__^*),谢谢 兽兽 和 胡戈戈。

> 杯子很快地送到了呢,貌似还不错的,虽然黑色有点偏青,不过也好看的。
> 小邪的相机现在不在身边,呵呵,只好把这张图片贴出来:“哥喝的不是水,是寂寞”。

三. 正则式的特殊语法:

> 下面的内容送给 Alswl 小盆友,有兴趣的童鞋就一起看看吧。

> 正则式里面也提供了很多的特殊语法,这里普遍被大家称为分组语法。
> 关于支持性的问题,小邪查了一些资料,据说 (?!exp) 是和PHP兼容性最好的。

捕获:
(exp) - 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) - 匹配exp,并捕获文本到名称为name的组里,也可以写成 (?'name'exp)
(?:exp) - 匹配exp,不捕获匹配的文本,也不给此分组分配组号

零宽断言:
(?=exp) - 匹配exp前面的位置
(?<=exp) - 匹配exp后面的位置
(?!exp) - 匹配后面跟的不是exp的位置
(?<!exp) - 匹配前面不是exp的位置

注释:
(?#comment) - 这种类型的分组不对正则表达式的处理产生任何影响

四. 正则式的零宽断言:

> 呵呵,话说对于 “断言” 这个词语的解释是 - 这个位置应该满足一定的条件。
> Alswl 问小邪了一个问题,是关于多重条件的匹配问题,如图。

> 我们要使用的是(?!exp),即让正则匹配出后面跟的不是 exp 的位置。
> 这里的 $test 数组提供的是一系列条件,Akswl 要小邪这样子。

> 1. 匹配一段长度为 13 的字符串。
> 2. 字符串中有连续的 8 个数字。
> 3. 字符串中其他 5 个字符是任意的。

> Update at 2010.01.08 -
> 杯具,小邪昨天犯错误了,更新一下解法,灰常感谢柳城为小邪指出错误。

$regex = '/^(?!(.*?\d){9,})(?!(.*?\D){6,}).{13}$/';

> 小邪是这个样子解答的,首先两边的斜杠是 Perl 正则式的要求。
> 然后两边的 ^ 和 $ 用来表示对应的是字符串的开始和结束。
> 接着 .{13},. 表示除了换行以外的所有字符,13 规定了匹配长度。

> 我们这里前面用了两次零宽断言,第一次,(?!exp) 这里的 exp 是 (.*?\d){9,}。
> 表示数字的个数大于等于 9,零宽断言把它反过来就是数字的个数小于 9。
> 第二次 exp 是 (.*?\D){6,} 表示非数字大于等于 6 个以上。
> 即表示非数字的个数大于等于 6,把它反过来就是非数字的个数小于 6。

> 而这里 .* 表示 ?\d 和 ?\D 的前面可能有零次或更多次的其他字符。
> 而这里的 ? 表示这段连续的字符会重复零次或一次。

> 下面是这个测试程序的源代码,可以拿去运行看看,嘎嘎。

<?php
$test[0] = 'asss13336644ss'; $test[1] = 'aas15151515ss';
$test[2] = 'aa15151515sss'; $test[3] = 'aa15151515ss1';
$test[4] = 'aa15151515ss11';$test[5] = 'aa151515151ss';
$test[6] = 'aa15151511ssss';
$regex = '/^(?!(.*?\d){9,})(?!(.*?\D){6,}).{13}$/';
foreach ($test as $val) {//
	preg_match($regex,$val,$result);
	print_r($result);
	echo "<br/>\r\n";
}
// 运行上面的代码就会出现以下结果 -
// Array ( )
// Array ( [0] => aas15151515ss )
// Array ( [0] => aa15151515sss )
// Array ( )
// Array ( )
// Array ( )
// Array ( )
?>

五. 以下是小邪昨天犯的错误(Update at 2010.01.08)

$regex = '/^(?!\d{8,})(?!\D{5,}).{13}$/';

> 小邪是这个样子解答的,首先两边的斜杠是 Perl 正则式的要求。
> 然后两边的 ^ 和 $ 用来表示对应的是字符串的开始和结束。
> 接着 .{13},. 表示除了换行以外的所有字符,13 规定了匹配长度。

> 我们这里前面用了两次零宽断言,第一次,(?!exp) 这里的 exp 是 \d{8,}。
> 表示数字的数目在 8 个以上,第二次 exp 是 \D{5,} 表示非数字有5个以上。

> 因为零宽断言是让正则匹配出后面跟的不是 exp 的位置。
> 所以我们匹配到的是数字不在 8 个以上,数字小于等于 8 的字符串。
> 同时非数字小于等于 5 的字符串,最后在右边用 13 来确定整段的长度即可。

> 下面是这个测试程序的源代码,可以拿去运行看看,呵呵。

<?php
$test[0] = 'asss13336644ss'; $test[1] = 'aas15151515ss';
$test[2] = 'aa15151515sss'; $test[3] = 'aa15151515ss1';
$test[4] = 'aa15151515ss11';
$regex = '/^(?!\d{8,})(?!\D{5,}).{13}$/';
foreach ($test as $val) {
	preg_match($regex,$val,$result);
	print_r($result);
	echo "<br/>\r\n";
}
// 运行上面的代码就会出现以下结果 -
// Array ( ) Array ( [0] => aas15151515ss )
// Array ( [0] => aa15151515sss ) Array ( [0] => aa15151515ss1 )
// Array ( )
?>
Leave a comment
138 Comments.
  1. M Mozilla Firefox Windows 坐沙发!#1

    嘿嘿,第一次了就把你们家沙发搬走了,真不好意思,再买一个吧 :cool:

    @
  2. alswl Mozilla Firefox Windows 坐板凳!#2

    - -#
     ~
    地板咯~
    万分感谢热情的小邪。。。

    @
  3. 万戈 Mozilla Firefox Windows 躺地板!#3

    哼哼,自觉点,把我要的东东交出来让我T,我T呀T :cool:

    @
    • @万戈 , = =,您老到底要小邪的弟弟还是还是内幕 ~
      ╮(╯▽╰)╭ ~
      怎么小邪老觉得你对内幕的兴趣相对比较小 ~
      顿时脊背发凉,冷汗犹如黄河之水滔滔不绝 ~ :exclaim:

      @
    • @万戈 , = =,今天小小邪怎么会这么惨 ~
      一大早被人弹,下午被人围观,晚上619又要捏 ~
      天可怜见 ~!天可怜见呐 ~!
      万戈兄相信你能猜到域名的 ~
      最多只能透露个.com,再多说,619要踩小小邪了 ~ ╮(╯▽╰)╭

      @
  4. 蓝冰 Mozilla Firefox Windows 天花板!#4

    你要变餐具了。

    @
    • @蓝冰 , 你这个预言太牛叉了,今天一整天小小邪特惨 ~
      一大早被人弹,下午被人围观,晚上619又要捏 ~

      @
  5. fatkun Google Chrome Windows 下水道!#5

    灌水组织~~?

    @
  6. 阿吴 Google Chrome Windows 地心!#6

    哈哈,太有意思了,小X就等着大家折磨吧

    @
  7. 知道不,我看这篇文章,滚动条上上下下拉了不下5回,才看懂文章的主题,唉,Sawyer是老咯...

    @
  8. 准备成立个茶几组织,把杯具洗具都丢进去~

    @
  9. 那天天都是寂寞了~~~ :evil: :evil: :evil:

    @
  10. 那只杯我是不敢拿来喝水了。。。

    @
  11. 想要那个杯具...

    @
  12. 呵呵,我也想加入这个神秘组织....

    @
  13. :lol: 小邪我发生洗具了,我写的推文中了225美刀 :mad:

    @
  14. 小弟弟,高潮,受精了,怎么尽是些让人想入非非的词语..

    @
  15. 莫非要搞的瑟情网站了,搞那么神秘。

    @
  16. 一帮,忒YD了,观望小邪JJ中…… :mrgreen:

    @
  17. 甚是把我笑趴了。

    @
  18. 这次我是真的学习了,绝不是拿“学习了”这三个字来灌水的,我今天在这里学习了第四部分的内容。要说前面的日志那是真看不懂...... :mad:

    @
  19. 同志会这个名字真是瘆人,是不是异性恋的还不能参加了 :razz:

    @
  20. 一看信息都在,我就知道我曾经来过.

    @
  21. 还是对最下面的感兴趣,小邪 :wink:

    @
  22. 炒作,纯粹的炒作!
    这么一来,小邪弟弟火了 ..

    @
  23. 咔咔 这几天 Kaisir 要面临专升本考试了 可能没时间来踩了 见谅见谅哈~~ :smile:

    @
  24. 我的沙发,我的板凳,我的。。算了,这次先让你们了。
    小邪邪,嘿嘿嘿嘿嘿嘿嘿,先自己练习下弹JJ。。。免得你受不了。哇哈哈。 :mrgreen:

    @
  25. 戈戈的寂寞杯子有创意呵呵~

    @
  26. 前面都没看明白..

    看到正则, 强大!! 貌似你的解答也不算太对啊, 例如: 15151515aass1

    这问题真麻烦... 分两步就算了吧

    length = 13
    /\d{8,}/

    :razz:

    @
    • @柳城 , 我没弄错呀 ~
      > 1. 匹配一段长度为 13 的字符串。
      > 2. 字符串中有连续的 8 个数字。
      > 3. 字符串中其他 5 个字符是任意的。
      其他5个字符是任意的呀 ~

      @
    • @柳城 , 汗 ~ 貌似有点问题 ~ 杯具了 ~ 哎呀呀呀呀呀 ~!

      @
    • @柳城 , 呼,这下子总该对了,虽然小邪弄得连自己的糊涂了 ~ 麻烦帮忙看看 ~ 谢谢喔 ~

      < ?php
      $test[0] = 'asss13336644ss'; $test[1] = 'aas15151515ss';
      $test[2] = 'aa15151515sss'; $test[3] = 'aa15151515ss1';
      $test[4] = 'aa15151515ss11';$test[5] = 'aa151515151ss';
      $test[6] = 'aa15151511ssss';
      $regex = '/^(?!(.*?\d){9,})(?!(.*?\D){6,}).{13}$/';
      foreach ($test as $val) {//
      	preg_match($regex,$val,$result);
      	print_r($result);
      	echo "
      \r\n"; } // 运行上面的代码就会出现以下结果 - // Array ( ) // Array ( [0] => aas15151515ss ) // Array ( [0] => aa15151515sss ) // Array ( ) // Array ( ) // Array ( ) // Array ( ) ?>
      @
      • @邪 罗刹,
        更加不对了.. 哈哈.... 例如: 15151515aass1 和 aass115151515
        你都只考虑把8个数字放在中间.. 放在两边也有可能的啊 :wink:

        @
    • @柳城 , 谢谢喔 ~
      P.s.
      现在有种非常强烈的想把鼠标吞下去的冲动 ~ :confused:

      @
  27. 他那个产品其实不杂好

    @
  28. 零下12度。每次去打开都要等半天,(点击相关文章没反应)每天总有碰到这样的站点。。。。哈哈

    @
    • @笨笨 , 囧,你说的相关文章意思是点击标题吧?
      他那个模板最杯具的地方就标题居然没有加链接 ~
      只能点击 阅读全文或评论 ~

      @
  29. 嘿嘿,好邪恶

    @
  30. 所以这样我都不太想去。。。每次去都这样,那博主如果能更换一下模板的话我会像来贵博一样的勤快。每天都来。

    在我博客留言评论的xdjm 我几乎每天都去一趟。

    @
  31. 跟往常一样打开自己的网站 发现它又死了 :cry:

    @
  32. 晕,看完前几段就觉得博主强悍的一踏糊涂!

    @
  33. 小邪把JJ交出来,给我T一T!!哈哈 :mrgreen: :mrgreen:
    话说这个正则你想用在什么方面? :confused:

    @
    • @Jerry Chen , ╮(╯▽╰)╭,这个正则可以医治蛋疼 = = ~
      汗,小邪也不知道用在哪儿好 ~ 杯具 ~ :exclaim:

      @
    • @Jerry Chen , = =,小小邪好可怜 ~
      昨天一大早就被弹 ~ 下午被围观 ~ 晚上被619捏 ~
      今个儿一大早又要被弹 ~
      天可怜见 ~ 天可怜见呐 ~

      @
  34. 那杯子有个性,哈哈,

    @
  35. 你的文章可真长,杯具。

    @
  36. 我一看见你的文章开头,我就想起有一次我和兄弟们去吃火锅,结果附近桌子一直在滑酒拳:
    “谁YD啊谁YD,你YD啊你YD(循环)”
    ………………爆肝。 :mad:

    @
  37. 你用了头像缓存了是吗?我竟然看不到我的新头。 :lol:

    @
  38. 果然是杯具.

    @
  39. 原来小邪说的是这个。。哈哈。。

    @
  40. 这杯子也继承了,哥什么不是什么,是什么的。

    哎,这天下太乱了。

    @
  41. :sad: 告诉我内幕!!!!!!!!!!!!!!!!

    @
  42. JJ真的杯具了! :rolleyes:

    @
  43. 我又来了
    研究了一下午,终于明白了
    又复习了一下正则,学习了零宽断言

    @
  44. 呃··好有个性的杯具··· :evil: 那杯具放公司茶水间里估计能雷倒一片,囧死一堆

    @
  45. 呵呵。可爱!

    @
  46. 第一次来,留个脚印。 :wink:

    @
  47. 万老水很邪恶啊,话说到底是什么组织呢?

    @
  48. 这个篇日志很凌乱,看的我头都大了,不知道说的是什么。

    @
  49. 那杯子有意思。。

    @
  50. 过来看一看,嘿嘿。 杯具洗具,一定要看www.beijuxiju.com~ :wink:

    @

Leave a Reply


[ Ctrl + Enter ]

Trackbacks and Pingbacks: