重音字符和正则表达式

时间:2013-10-17 12:57:54

标签: javascript regex encoding diacritics

我有这个正则表达式:

(\b)(emozioni|gioia|felicità)(\b)

在类似下面的字符串中:

emozioni emozioniamo felicità felicitàs

它应匹配第一个和第三个单词。相反,它匹配第一个和最后一个。我认为这是因为重音字符。我试过这个替代方案:

(\b)(emozioni|gioia|felicità\s)(\b)

但只有在其后有另一个单词时才匹配“felicità”。因此,只有在这种情况下才具体:

emozioni emozioniamo felicità felicitàs

而不是在另一个:

emozioni emozioniamo felicitàs felicità

我发现了一篇关于法语重音字符的文章(所以在单词的开头)here,我跟着第二个答案。如果有人知道更好的解决方案,那将非常受欢迎。

2 个答案:

答案 0 :(得分:2)

单词边界\b仅适用于\w字符类中的字符,即[0-9a-zA-Z_],因此您不能将\b放在重音字符之后à

您可以使用前瞻解决问题:

felicità(?=\s|$)

或更短:

felicità(?!\S)

(或\W代替\s建议使用@Sniffer,但您承担风险以匹配以下内容:felicitàà

答案 1 :(得分:1)

尝试以下方法:

\b(emozioni|gioia|felicità)(?=\W|$)

这将匹配您列出的任何字词,只要其中任何字词后跟非字字符\W或字符串结尾$

Regex101 Demo