【发布时间】:2021-08-10 16:10:12
【问题描述】:
所以我对正则表达式非常陌生,我设法创建了一种方法来检查字符串中是否存在特定单词,而不仅仅是另一个单词的一部分。
示例: 我正在寻找“香蕉”这个词。 香蕉 == 真,香蕉拉玛 == 假
这一切都很好,但是当我在查找包含瑞典字母(Å、Ä、Ö)且仅包含两个字母的单词时出现问题。
示例: 我在一个看起来像这样的字符串中寻找单词“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å”更改为三个字母的单词,那么它就会返回 true:
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
我一直在寻找答案,我发现了一些与瑞典字母有类似问题的问题,他们都没有真正只寻找整个单词。 谁能解释我做错了什么?
【问题讨论】:
-
您确定您的用例需要 RegEx 吗?如果你在一个句子中寻找一个完整的单词,RegEx 可能是矫枉过正。 RegEx 在您需要匹配更复杂的模式的情况下表现出色。
-
好吧,在我检查了单词是否存在后,我使用正则表达式来找出单词的位置,以便我可以根据需要编辑单词。而且我不知道没有正则表达式是否有一种简单的方法来做到这一点
标签: javascript regex symbols