这是我今天遇到的一个有趣的片段:
/\ba/.test("a") --> true
/\bà/.test("à") --> false
然而,
/à/.test("à") --> true
首先,wtf?
其次,如果我想匹配单词开头的重音字符,我该怎么做呢?(我真的希望避免使用像/(?:^|\s|'|\(\) ....
这样的过度选择器)
发布于 2012-07-19 05:42:03
发布于 2011-03-26 03:03:09
/\bà/.test("à")
不匹配的原因是因为"à“不是单词字符。转义序列\b
仅在单词字符的边界和非单词字符之间匹配。/\ba/.test("a")
匹配是因为"a“是一个单词字符。因此,在字符串的开头(不是单词字符)和字母"a“(单词字符)之间存在边界。
JavaScript正则表达式中的单词字符被定义为[a-zA-Z0-9_]
。
要匹配字符串开头的重音字符,只需在正则表达式的开头使用^
字符(例如/^à/
)。该字符表示字符串的开头(不像\b
,它匹配字符串中的任何单词边界)。它是最基本和最标准的正则表达式,所以它绝对不会过分。
https://stackoverflow.com/questions/5436824
复制相似问题