Chinaunix

标题: 正则表达式的问题 [打印本页]

作者: Yarco    时间: 2005-07-05 08:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: Yarco    时间: 2005-07-05 09:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: coniverse    时间: 2005-07-05 11:23
标题: 正则表达式的问题
正则表达式又不是万能的,
更何况就算存在这么一个非常复杂的正则表达式,运用的时候速度肯定受到影响。
倒不如写分别写6个正则,连接在一起判断比较实际。
作者: Yarco    时间: 2005-07-05 11:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: lazylee    时间: 2005-07-05 11:31
标题: 正则表达式的问题
对,不要总是想用单一的regexp解决所有问题

你这个例子,完全可以取出头两个字符,先看是不是 /?
然后把后面的用 & 拆分,再判断合法性
作者: Yarco    时间: 2005-07-05 11:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: Yarco    时间: 2005-07-05 11:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: Yarco    时间: 2005-07-05 11:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: HonestQiao    时间: 2005-07-08 14:48
标题: 正则表达式的问题
仅供有限测试:

  1. <?php
  2. $aryTemp = array(
  3.     "1. /",
  4.     "2. /?",
  5.     "3. /?key",
  6.     "4. /?key=value",
  7.     "5. /?key=value&",
  8.     "6. /?key=value&key2=value2",

  9.     "1. /??",
  10.     "2. /?A",
  11.     "3. /?a==",
  12.     "4. /aa",
  13.     "5. /?a=&^&&c=d"
  14.     );

  15. $strMatch_END = "_END_";
  16. for($i = 0;$i < count($aryTemp);$i++) {
  17.     $strSource = $aryTemp[$i];
  18.     if (preg_match('/\/(\\?([0-9a-z]((=[0-9a-z%_]?))?&?)*)?' . $strMatch_END . '/', $strSource . $strMatch_END)) {
  19.         echo "ok   = " . $strSource . "\n";
  20.     } else {
  21.         echo "error= " . $strSource . "\n";
  22.     }
  23. }

  24. ?>;
复制代码


结果
ok    = 1. /
ok    = 2. /?
ok    = 3. /?key
ok    = 4. /?key=value
ok    = 5. /?key=value&
ok    = 6. /?key=value&key2=value2

error= 1. /??
error= 2. /?A
error= 3. /?a==
error= 4. /aa
error= 5. /?a=&^&&c=d





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2