【发布时间】:2017-09-08 12:18:57
【问题描述】:
我经常看到人们使用: [0-9] 代替 \d 和 [A-Za-z0-9_] 代替 \w
在使用元字符时,浏览器之间是否存在一些不一致或其他缺点? 我应该使用字符范围而不是相应的元字符吗?
【问题讨论】:
标签: javascript regex class range character
我经常看到人们使用: [0-9] 代替 \d 和 [A-Za-z0-9_] 代替 \w
在使用元字符时,浏览器之间是否存在一些不一致或其他缺点? 我应该使用字符范围而不是相应的元字符吗?
【问题讨论】:
标签: javascript regex class range character
没有已知的不一致,但有两个可能的原因。
首先,\d 和 \w 在不同的 RegExp 实现中表示不同的含义。引用regular-expressions.info:
由于某些字符类经常被使用,一系列的速记 字符类可用。
\d是[0-9]的缩写。多数情况 支持 Unicode 的风格,\d包括来自所有脚本的所有数字。 值得注意的例外是 Java、JavaScript 和 PCRE。这些 Unicode 风味仅与\d匹配 ASCII 数字。
所以,是的,JavaScript 在这方面是安全的 - 但如果您主要处理其他实现(例如 C# 和 Python3),您可能只是没有意识到这一点。
其次,一些开发人员可能更喜欢[0-9] 而不是\d,因为explicit is better than implicit。
【讨论】: