REGEXP智能额外字母检测

时间:2017-02-25 08:23:45

标签: javascript php regex

我正在处理正则表达式以匹配单词,即使用户输入有一些额外或更改的字母。例如,如果用户输入为pgone,则我的正则表达式仍应与phone匹配,或者如果用户输入为phini,则其也应与phone匹配。我不知道该怎么做。

我尝试了以下内容,但它与我匹配了一些额外的词:

[[:<:]](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,}[[:>:]]

1 个答案:

答案 0 :(得分:0)

您可以做的是定义您希望用户使用原子组执行的确切错误:

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

你可以添加一些其他的单词和模式以匹配其他可能的错别字,但我不认为这应该是这里的方式。您可能应该按照Paul Crovella的建议计算Levenshtein距离,以检查输入的字符串与正确字符串之间的距离。