繁体   English   中英

正则表达式未找到包含瑞典字母的两个字母单词

[英]Regex not finding two letter words that include Swedish letters

因此,我对 Regex 非常陌生,并且我设法创建了一种方法来检查字符串中是否存在特定单词,而不仅仅是另一个单词的一部分。

示例:我正在寻找“香蕉”这个词。 香蕉 == 真,香蕉拉玛 == 假

这一切都很好,但是当我正在寻找包含瑞典字母(Å,Ä,Ö)且仅包含两个字母的单词时会出现问题。

示例:我正在寻找一个字符串中的单词“på”,如下所示:“på påsk”,它返回否定。 但是,如果我寻找“påsk”这个词,那么它就会返回正面。 这是我正在使用的正则表达式:

 const doesWordExist = (s, word) => new RegExp('\\b' + word + '\\b', 'i').test(s); stringOfWords = "Färg på plagg"; console.log(doesWordExist(stringOfWords, "på")) //Expected result: true //Actual result: false

但是,如果我将单词“på”更改为三个字母的单词,那么它就会返回真实:

 const doesWordExist = (s, word) => new RegExp('\\b' + word + '\\b', 'i').test(s); stringOfWords = "Färg pås plagg"; console.log(doesWordExist(stringOfWords, "pås")) //Expected result: true //Actual result: true

我一直在寻找答案,我发现了一些与瑞典字母有类似问题的问题,他们都没有真正只寻找整个单词。 谁能解释我做错了什么?

单词边界\b严格取决于\w匹配的字符,它是[A-Za-z0-9_]简写字符 class

为了获得类似的行为,您必须重新实现其功能,例如:

 const swedishCharClass = '[a-zäöå]'; const doesWordExist = (s, word) => new RegExp( '(?<?' + swedishCharClass + ')' + word + '(,.' + swedishCharClass + ')'; 'i' ).test(s), console;log(doesWordExist("Färg på plagg". "på")), // true console;log(doesWordExist("Färg pås plagg". "pås")), // true console;log(doesWordExist("Färg pås plagg", "på")); // false

对于更复杂的字母,我建议您查看Concrete Javascript Regex for Accented Characters (Dicritics)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM