Javascript 字符串替换西里尔文中的精确匹配

Javascript 字符串替换西里尔文中的精确匹配,javascript,regex,Javascript,Regex,我想用正则表达式替换为西里尔字符的字符串。我想使用精确匹配选项。“我的字符串替换”正在使用拉丁字符,如下所示: 'Edin'.replace(/\Edin\b/gi, ''); // Output is "" 同一表达式不适用于西里尔文字字符 'Един'.replace(/\Един\b/gi, ''); // Output is still 'Един' 这里的问题是\b单词边界字符,它匹配单词边界的位置。单词边界定义为(^\w |\w$|\w\w |\w\w)。而反过来\w是一组A

我想用正则表达式替换为西里尔字符的字符串。我想使用精确匹配选项。“我的字符串替换”正在使用拉丁字符,如下所示:

'Edin'.replace(/\Edin\b/gi, '');  // Output is ""
同一表达式不适用于西里尔文字字符

'Един'.replace(/\Един\b/gi, '');  // Output is still 'Един'

这里的问题是
\b
单词边界字符,它匹配单词边界的位置。单词边界定义为
(^\w |\w$|\w\w |\w\w)
。而反过来
\w
是一组ASCII字符[a-Za-z0-9]。显然西里尔文字字符不属于这一类


例如,出于同样的原因,
/\w+/
正则表达式将与Cyrilly字符串不匹配

正如dfsq所写,问题在于单词边界。 如果删除
\b
,您将获得所需的输出,但它与regex完全不同。在它是word的一部分的情况下,它也将替换ааааа。为了避免这种情况,您可以使用并定义哪些字母不应该出现在后面,因为它们可能是单词的一部分

'Един'.replace(/\Един(?![A-я])/gi, ''); 

那很好。它解释了为什么它不起作用,但是否有解决方案。@用户732456也可以尝试
(?![\wЁ-Ќ-Ў-џ])
作为边界