2012-03-26 82 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,如果超过,它会导致验证失败。虽然这比基本的正则表达式复杂得多。这里有一些链接,您可以查看更多信息: