用字母写的电话号码的正则表达式

时间:2012-03-26 15:01:38

标签: regex

我有一个匹配电话号码的正则表达式

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

但现在我想要一个正则表达式,它与用字母字符编写的电话号码相匹配,如下所示:

nueve nueve tres uno cinco cero tres cinco cinco siete

1 个答案:

答案 0 :(得分:1)

我的猜测是你需要这种形式,你不希望用户交换电话联系方式。也许他们必须支付订阅费才能联系该服务的其他用户(通过电话)。有些用户有时会尝试将此信息放入消息中,方法是将其放入奇怪的格式(数字作为单词)。这个假设是否正确?

如果是这样,那么我不确定正则表达式是否是您的最佳解决方案。你必须做这样的事情:

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

然后您可以说如果匹配,则该消息无效。 大问题虽然用户可以简单地用不同的语言输入数字,或者拼写错误且容易理解的单词 - 或者他们可以在每个单词之间添加空格(或任何类型的标点符号)信(有很多方法)。

通过进行某种模糊匹配可能会更好,这种模糊匹配会返回一个等级值(Levenshtein距离),表示用户在消息中输入电话号码的可能性。然后你有一个该等级的threashold,如果超过它会导致它失败验证。这比基本的正则表达式要复杂得多。以下是一些链接,您可以查看更多信息: