Js RegEx无法识别带重音的字母(utf-8)

时间:2018-08-20 14:51:32

标签: javascript node.js regex unicode

Windows 10 64位上的

Node.js 10.8.0 需要识别包含非字母字符的字符串:

let a = "train"
/\W/u.test(a) // false
a = "non-good"
/\W/u.test(a) // true

到目前为止,一切都很好。但是,如果字符串包含重音字母,则此方法将无效:

a = "niño"
/\W/u.test(a) // true!?

请注意,我使用'u'修饰符使其与Unicode一起使用。

错误或功能?

很明显,我可以将测试编写为:

/[^a-zA-Zñ]/u.test(a)

添加所有带重音符号的字符,但似乎不正确。 有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:3)

显然是功能。

根据MDN:

  

\ W

     

匹配基本单词中不是单词字符的任何字符   拉丁字母。等效于[^A-Za-z0-9_]

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

我找不到任何声称u标志应该改变这种行为的消息来源。