我对JavaScript正则表达式中的这行代码感到困惑:
.replace(/[^\w- ]+/g,'')
据我所知,它正在尝试对不在单词character类中的字符执行替换。但它也是一个范围,所以它必须包括其他。我想也许也是空格字符,但在控制台中运行它似乎不会取代它。
[^ \ w]不代表以下字符:a-zA-Z0-9 _
这里的范围怎么样?从什么开始?
答案 0 :(得分:3)
\w-
不是字符范围,因为\w
不是字符。这里的-
没有特殊含义,因此[^\w- ]
匹配任何不是单词字符,文字短划线或空格的内容。
答案 1 :(得分:2)
由于\w
不是字符,语法不是有效范围。字符类中位置的连字符不能形成范围,并被解释为文字或错误。正则表达式匹配任何字符,除了:单词字符(a-z
,A-Z
,0-9
,_
),连字符(-
)和空格字符( ' '
)。