2012-03-26 80 views
0

所寫的,我有一個正則表達式相匹配的電話號碼正則表達式的電話號碼與字母

(((\d).{0,5}){7}) 

但現在我想它匹配與字母字符寫的電話號碼,像這樣的正規表示法:

nueve nueve tres uno cinco cero tres cinco cinco siete 
+2

只是一些建議 - 人們更容易幫助你,如果你有可能幫助他們回報 - 你有很多問題沒有選擇答案,人們可​​能會被阻止花很少的時間回答獎勵的機會 – 2012-03-26 20:57:00

回答

1

我的猜測是,你需要這種形式的某種形式,你不希望用戶交換手機的聯繫方式。也許他們需要支付訂閱費以便能夠聯繫服務的其他用戶(通過電話)。有些用戶有時會嘗試將這些信息放入一條消息中,將其放入奇怪的格式(數字作爲單詞)。這個假設是否正確?

如果是這樣,那麼我不知道正則表達式是你的最佳解決方案。你將不得不這樣做:

\b(zero|one|two|three|four|five|six|seven|eight|nine)\b 

然後你可以說,如果它匹配,那麼該消息是無效的。 與此相關的大問題雖然是用戶可以簡單地輸入不同語言的數字,或拼寫錯誤但易於理解的單詞 - 或者他們可以在每個字母之間添加空格(或任何類型的標點符號)(有很多圍繞這個方法)。

通過做某種模糊匹配,返回排名值(Levenshtein距離),說明用戶輸入電話號碼的可能性有多大。然後你有一個這個等級的threashold,如果超過,它會導致驗證失敗。雖然這比基本的正則表達式複雜得多。這裏有一些鏈接,您可以查看更多信息: