免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1137 | 回复: 8
打印 上一主题 下一主题

正则表达式的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-05 08:53 |只看该作者 |倒序浏览
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
2 [报告]
发表于 2005-07-05 09:35 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2005-07-05 11:23 |只看该作者

正则表达式的问题

正则表达式又不是万能的,
更何况就算存在这么一个非常复杂的正则表达式,运用的时候速度肯定受到影响。
倒不如写分别写6个正则,连接在一起判断比较实际。

论坛徽章:
0
4 [报告]
发表于 2005-07-05 11:28 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2005-07-05 11:31 |只看该作者

正则表达式的问题

对,不要总是想用单一的regexp解决所有问题

你这个例子,完全可以取出头两个字符,先看是不是 /?
然后把后面的用 & 拆分,再判断合法性

论坛徽章:
0
6 [报告]
发表于 2005-07-05 11:36 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2005-07-05 11:49 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2005-07-05 11:53 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
9 [报告]
发表于 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP