当使用正则表达式查找没有e的单词时,为什么[^ \ We]而不是[^ e]

时间:2017-08-04 01:20:47

标签: javascript regex

我正在研究Eloquent JavaScript第9章,其中一个问题就是找不到e的单词。

答案包含[^\We],但我不明白为什么\W在那里很重要。当然,方括号表示单词字符集中的任何内容,而不是字母e,但为什么我不能省略\W?我试过了,它没有用。

我有

/.*\b[^e]+\b.*/

简单地归还一切。正确的答案是

/\b[^\We]+\b/i

1 个答案:

答案 0 :(得分:3)

\W非单词字符。请参阅documentation

您的正则表达式为[^\We]。这将匹配非单词字符和字母“e”的否定。换句话说,它匹配字母字符,除了字母'。'。

你不能省略\W因为没有它,你的正则表达式将匹配除了' e'之外的所有内容,这不是要求(匹配单词字符集)除了' e')。