为什么下划线(_)不被视为非单词字符?

Ogh*_*ume 6 javascript regex

为什么下划线(_)不被视为非单词字符?此正则表达式\ W匹配所有非单词字符,但不匹配下划线.

axi*_*iac 5

\W被定义为[^A-Za-z0-9_]

它的反义词\w[A-Za-z0-9_]和意思是“一个词字符”。

它与您在口语中所感知的单词无关。这里的“词”是指标识符。大多数编程语言允许_在标识符中使用(大写和小写)字母、数字和下划线 ( )。


rev*_*evo 5

参考Jeffrey Friedl关于正则表达式的书,这原本是对Perl正则表达式的更改。返回到1988年,根据允许给Perl变量命名的字符[页89]:

Perl 2于1988年6月发布。Larry完全替换了正则表达式代码,这次使用的是上一节中提到的Henry Spencer软件包的增强版本。您最多仍可以有9套括号,但现在可以| 在其中使用。支持\d\s被添加,对支持的\w更改也包括下划线,因为此后它将与Perl变量名称中允许的字符匹配。