【发布时间】:2011-10-28 04:36:40
【问题描述】:
在我的表单上,我有一个电话号码文本框。我有一个相当通用的正则表达式,几乎可以接受本地或国际电话号码的所有变体。表达式如下:
^((+)?[1-9]{1,2})?([-\s.])?(((\d{1,4}))|\d{1,4} )(([-\s.])?[0-9]{1,12}){1,2}(x?[0-9]{1,})?$
问题是,该字段不是必需的,但如果他们决定输入数字,则需要进行验证。有没有办法做到这一点?
【问题讨论】:
-
忠告,正则表达式电话号码是个坏主意。它允许所有可能的“正确”电话号码的可能性有多大?它会停止像“(333)-333-3333 ext. 999”这样的输入吗?因为这是一个完全有效的数字,在任何想要阻止字母字符或句点的正则表达式中都会失败。除非您的应用存储电话号码以便稍后由机器自动拨号,否则您实际上不需要要求用户以机器可读的格式输入电话号码。
-
@Graham 我没有设计应用程序,我只是一个程序员。我们的客户必须在数据库中注册至少 1 个电话号码。在创建帐户之前输入号码,并且在批准帐户之前所有信息都由人工审核。