2017-02-25 47 views
-1

即時用戶輸入有一些額外的或改變的字母,我正在研究正則表達式來匹配單詞。例如,如果用戶輸入爲pgone,則我的正則表達式仍應與phone匹配,或者如果用戶輸入爲phini,則它也應該與phone匹配。我不知道如何做到這一點。REGEXP智能外部字母檢測

我曾嘗試以下,但它符合我一些多餘的話:

[[:<:]](p|)[a-zA-Z]{0,2}(g|)[a-zA-Z]{0,2}(o|)[a-zA-Z]{0,2}(n|)[a-zA-Z]{0,2}(e|)[a-zA-Z]{0,}[[:>:]]

+2

http://php.net/levenshtein –

+1

這可以通過將可接受拼寫錯誤映射到「正確」單詞的映射或者將編輯距離映射到目標單詞的度量來完成。正則表達式方法對於您的目標將迅速增長無法管理。 – dawg

回答

0

你可以做的是定義你所期望的用戶使用原子團做精確的錯誤:

^(?>phone|phine|pgone|phoni|ghone.|p?one|p.one)$ 

您可以添加一些其他的文字和圖案,以配合其他可能的拼寫錯誤,但我不認爲這應該是去這裏的路。您可能應該按Paul Crovella建議的方法計算Levenshtein距離,以檢查輸入的字符串與正確的字符串之間的距離。

+0

非常感謝! :* –