Javascript 正则表达式中的字符类与速记

Javascript 正则表达式中的字符类与速记,javascript,regex,Javascript,Regex,regexp上的脚本声明: \w匹配任何字母数字字符,包括下划线。相当于[A-Za-z0-9_33; 考虑到这一点,为什么我会以这种方式看到一些代码:[\w]。这是不是只是我的坏习惯?JavaScript明确指出,\w等同于[A-Za-z0-9\] 任何官方文件的参考/引用(带链接)都将不胜感激。\w和[\w]功能相同。这是一个“风格/偏好”的问题。 但是,有时有必要在字符类中使用\w,例如: [\w ]* --> "abcd efg hijk" // Matches the whole

regexp上的脚本声明:

\w匹配任何字母数字字符,包括下划线。相当于[A-Za-z0-9_33;

考虑到这一点,为什么我会以这种方式看到一些代码:
[\w]
。这是不是只是我的坏习惯?JavaScript明确指出,
\w
等同于
[A-Za-z0-9\]


任何官方文件的参考/引用(带链接)都将不胜感激。

\w
[\w]
功能相同。这是一个“风格/偏好”的问题。
但是,有时有必要在字符类中使用
\w
,例如:

[\w ]* --> "abcd efg hijk" // Matches the whole line
\w*    --> "abcd efg hijk" // Matches "abcd"

每个工具对正则表达式的使用都有不同的解释。在这种情况下,它们引用的是相同的。请记住,字符类不会嵌套在某些风格中,因此您需要单独使用POSIX样式的字符类
[[:alnum:][uz]
\w


是的,在这里它们是一样的,我只是习惯了使用正则表达式。

你甚至可以看到人们写一些类似
[x]
a | b | c
的东西。Regexp语法很复杂,不是每个人都正确。是的,只是一个坏习惯——超完整性,或者可能。在我看来,使用
[\w]
毫无意义。括号是多余的,因为它与
\w
相同。有些人倾向于使用字符类而不是转义,例如
[.]
而不是
\.
,因为点在字符类中失去了意义。这种行为更多的是关于可读性和风格。另一方面,有时您希望从
\w
中排除下划线。这是个诡计!使用它的倒数形式
\W
(大写),将它添加到一个否定字符类
[^\W]
,并添加下划线
[^\W\]