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)
添加所有带重音符号的字符,但似乎不正确。 有什么建议吗?谢谢!
答案 0 :(得分:3)
显然是功能。
根据MDN:
\ W
匹配基本单词中不是单词字符的任何字符 拉丁字母。等效于
[^A-Za-z0-9_]
。
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp)
我找不到任何声称u
标志应该改变这种行为的消息来源。