【问题标题】:Metacharacters vs Character ranges in Javascript RegexJavascript Regex 中的元字符与字符范围
【发布时间】:2017-09-08 12:18:57
【问题描述】:

我经常看到人们使用: [0-9] 代替 \d 和 [A-Za-z0-9_] 代替 \w

在使用元字符时,浏览器之间是否存在一些不一致或其他缺点? 我应该使用字符范围而不是相应的元字符吗?

【问题讨论】:

标签: javascript regex class range character


【解决方案1】:

没有已知的不一致,但有两个可能的原因。

首先,\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

【讨论】:

    猜你喜欢
    • 2015-05-15
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多