用Javascript正则expression式匹配重音字符

这是我今天遇到的一个有趣的片段:

/\ba/.test("a") --> true /\bà/.test("à") --> false 

然而,

 /à/.test("à") --> true 

首先, wtf?

其次,如果我想在一个单词的开头匹配一个重音字符,我该怎么做? (我真的很喜欢避免使用/(?:^|\s|'|\(\) .... )之类的select器。

这对我工作:

 /^[az\u00E0-\u00FC]+$/i 

在这里的帮助

/\bà/.test("à")不匹配的原因是因为”à“不是一个单词字符。 转义序列\b仅在单词字符的边界和非单词字符之间匹配。 /\ba/.test("a")匹配,因为”a“是一个单词字符。 因此,string(不是单词字符)的开头与单词字符“a”之间存在边界。

JavaScript正则expression式中的单词字符定义为[a-zA-Z0-9_]

要匹配string开始处的重音字符,只需在正则expression式开始处使用^字符(例如/^à/ )即可。 该字符意味着string的开始(与在string内的任何字边界匹配的\b不同)。 这是最基本的和标准的正则expression式,所以它绝对不是顶部。

堆栈溢出在正则expression式中也有一个非ASCII字符的问题,你可以在这里find它。 他们不处理单词边界,但也许会给你有用的提示。

还有另一个页面 ,但他想匹配string而不是单词。

我不知道,现在也没有find你的问题的主angular,但是当我看到我的第一个链接中使用了怪物正则expression式的时候,你想避免的这个群体并不是顶尖的,而且也是我的观点你的解决scheme