正则表达式范围如何使用速记语法?

时间:2014-07-02 01:29:27

标签: javascript regex

我对JavaScript正则表达式中的这行代码感到困惑:

.replace(/[^\w- ]+/g,'')

据我所知,它正在尝试对不在单词character类中的字符执行替换。但它也是一个范围,所以它必须包括其他。我想也许也是空格字符,但在控制台中运行它似乎不会取代它。

[^ \ w]不代表以下字符:a-zA-Z0-9 _

这里的范围怎么样?从什么开始?

2 个答案:

答案 0 :(得分:3)

\w- 不是字符范围,因为\w不是字符。这里的-没有特殊含义,因此[^\w- ]匹配任何不是单词字符,文字短划线或空格的内容。

答案 1 :(得分:2)

由于\w不是字符,语法不是有效范围。字符类中位置的连字符不能形成范围,并被解释为文字或错误。正则表达式匹配任何字符,除了:单词字符(a-zA-Z0-9_),连字符(-)和空格字符( ' ')。