Javascript 正则表达式中的字符类与速记
regexp上的脚本声明: \w匹配任何字母数字字符,包括下划线。相当于[A-Za-z0-9_33; 考虑到这一点,为什么我会以这种方式看到一些代码: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
[\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\]
。