PHP 果然是最好的语言之正则的兼容问题。

2016-03-09 12:04:40 +08:00
 ChoateYao

测试一个匹配字母和数字的正则:

pattern='/^\w+$/'
string='人 1994'

PHP 结果

Array
(
    [0] => 人 1994
)

Javascript 结果

匹配不到数据

结论
PHP 是世界上最好的语言,我在这个细节上浪费了 30 分钟。

如果要匹配字母和数字最好使用以下方法:

/^[a-zA-Z\d_]+$/
3755 次点击
所在节点    PHP
29 条回复
milklee
2016-03-09 12:14:04 +08:00
虽然在 js 里 \w 是不能匹配到汉字的。。但是按照标准来说,\w 也不会匹配空格才对

所以为什么在 php 里 /^\w+$/ 会匹配到 '人 1994' 中间的空格?= =
Strikeactor
2016-03-09 12:14:50 +08:00


顺便楼主例子错了,你字符串中间有空格, PHP 的匹配结果也是空的

wjfz
2016-03-09 12:15:53 +08:00
莫非是 V2E 自动加的空格?

这个孩子是 1994 年生的。
wjfz
2016-03-09 12:16:16 +08:00
果然是 V2 自动加的空格。
cccRaim
2016-03-09 12:16:59 +08:00
一般来说, js 后面要加个 g 才是正常的匹配结果
drush
2016-03-09 12:22:33 +08:00
排除 v2 自動加空格,有什麼問題?
xuboying
2016-03-09 12:23:07 +08:00
感觉用\w 匹配汉字由 locale 决定,保险起见我只用\p{Han}
4641585
2016-03-09 12:28:10 +08:00
@wjfz

V2 加空格不会加到代码段里吧
lianz
2016-03-09 12:28:21 +08:00
RTFM
又是一个不看文档就直接喷的人,你干嘛不去喷飞机能在天上飞、火车能在铁轨上跑、自行车能骑呢。
zakokun
2016-03-09 12:35:17 +08:00
PHP 确实有很多缺点.
但是普通程序员还没那个资格喷吧?
dangyuluo
2016-03-09 12:55:57 +08:00
@zakokun yes
eoo
2016-03-09 13:50:14 +08:00
.......................
BOYPT
2016-03-09 13:53:59 +08:00
有啥好争的,本来 regex 就有好几种口味,较流行的就是 php/js/python 几种口味
https://regex101.com/ 可以在线测试
eoo
2016-03-09 13:54:49 +08:00
@Strikeactor 这是什么网站?
matsuijurina
2016-03-09 13:57:01 +08:00
当时 V2EX 自动加空格的时候就有人预料到会出现楼主这样的问题,认为不能为了排版的美观影响了内容的表达。
Jaylee
2016-03-09 14:03:22 +08:00


是我姿势有问题? 怎么什么阿猫阿狗都来喷?
ChoateYao
2016-03-09 14:27:45 +08:00
ChoateYao
2016-03-09 14:31:40 +08:00
slixurd
2016-03-09 14:31:42 +08:00
我觉得是字符集问题,试了一下几个 online 的 php 运行平台,有的可以有的不行
版本没有什么影响,另外楼上的别随便喷啊,别人的运行环境都没了解....
phithon
2016-03-09 14:37:06 +08:00
还是跟本地编码有关系吧,允许是 php 一个 bug 吧。
国外的机器是没问题的: https://3v4l.org/rNgfi
语言有坑也正常,任何语言都有自己的坑和 BUG 。你浪费了 30 分钟,只能说明你看不穿这个问题,还得多多学习怎么解决问题,而不是怪别人。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/262150

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX