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

时间:2018-03-28 11:56:31

标签: javascript regex

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

4 个答案:

答案 0 :(得分:5)

参考Jeffrey Friedl关于正则表达式的书,这是Perl正则表达式的一个变化,最初。回到1988年,根据允许命名Perl变量的字符[第89页]:

  

Perl 2于1988年6月发布.Larry取代了正则表达式代码   完全,这次使用亨利的大大增强版本   上一节中提到的Spencer包。你还可以   最多有九组括号,但现在你可以使用sudo rm -rf /usr/share/elasticsearch/data/   在他们里面。添加了对|\d的支持,并且对\s的支持是   改为包括下划线,从那以后它会匹配什么   Perl变量名中允许使用字符。

答案 1 :(得分:2)

\W is defined as [^A-Za-z0-9_]

它与\w相反,是[A-Za-z0-9_],意思是“一个字符”。

当你用口语感知它们时,它不是关于单词的。这里的“单词”表示标识符。大多数编程语言在标识符中允许(大写和小写)字母,数字和下划线(_)。

答案 2 :(得分:-1)

根据regex101:\W matches any non-word character (equal to [^a-zA-Z0-9_])。这似乎是一个设计师'选择。

答案 3 :(得分:-1)

“单词字符”定义基于可在许多编程语言中用作标识符一部分的字符,即[A-Za-z0-9 _]。