免费注册 查看新帖 |

Chinaunix

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

关于正则表达式匹配问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-19 22:38 |只看该作者 |倒序浏览
问题1:
我想匹配一个a-zA-Z0-9包括中文的字符串,其他都不要
这样匹配为什么不行?
$pattern='/[^\s<>!@#\$%\^&\*\(\)]+/;;
$str='你好世界fadjsflkjlsad3883';
echo preg_match($pattern,$str);

不能匹配!为什么?

问题2:
[]中括号中的^代表不匹配,如果[^!@#%]是不是!@#%都不会匹配

问题3:如何匹配UNICODE字符?

论坛徽章:
0
2 [报告]
发表于 2007-05-19 22:43 |只看该作者

回复 1楼 ydwydw 的帖子

我知道中文可以用preg_match("/([".chr(0xa1)."-".chr(0xff)."])/", $str)进行匹配

论坛徽章:
0
3 [报告]
发表于 2007-05-19 22:50 |只看该作者
谢谢,希望有更完整的答案!
不过这样不能匹配unicode啊

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
4 [报告]
发表于 2007-05-19 23:40 |只看该作者
还是手册:
首先:http://cn.php.net/manual/zh/ref.pcre.php
CXX. Perl 兼容正则表达式函数

然后:http://cn.php.net/manual/zh/reference.pcre.pattern.modifiers.php
u(PCRE_UTF8)
此修正符启用了一个 PCRE 中与 Perl 不兼容的额外功能。模式字符串被当成 UTF-8。本修正符在 Unix 下自 PHP 4.1.0 起可用,在 win32 下自 PHP 4.2.3 起可用。自 PHP 4.3.5 起开始检查模式的 UTF-8 合法性。

论坛徽章:
0
5 [报告]
发表于 2007-05-22 14:43 |只看该作者
$str='你好世界fadjsflkjlsad3883';
//echo "/".chr(0xa1)."-".chr(0xff)."/";
$str = preg_match("/[^0-9a-zA-Z".chr(0xa1)."-".chr(0xff)."]/",$str);

if($str ==''){
        echo "匹配";
}else{
        echo "不匹配";
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP