簡體   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