我正在处理正则表达式以匹配单词,即使用户输入有一些额外或更改的字母。例如,如果用户输入为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,}[[:>:]]
。
答案 0 :(得分:0)
您可以做的是定义您希望用户使用原子组执行的确切错误:
^(?>phone|phine|pgone|phoni|ghone.|p?one|p.one)$
你可以添加一些其他的单词和模式以匹配其他可能的错别字,但我不认为这应该是这里的方式。您可能应该按照Paul Crovella的建议计算Levenshtein距离,以检查输入的字符串与正确字符串之间的距离。