我有一个正则表达式,我将使用它来验证输入的号码是否采用标准的美国电话格式(即(###)###-####)。我是正则表达式的新手,但在弄清楚每个字符的确切功能时仍然遇到了一些麻烦。如果有人会逐个阅读/验证我的理解,我将非常感激。另外,如果正则表达式是错误的,我显然想知道这一点。
\D*?(\d\D*?){10}
我认为正在发生的事情:
\D*?( 表示括号元字符的转义序列......不知道为什么 \D*? 是必要的
\d 表示数字
\D*? 表示有一个非数字字符( - ) 后跟右括号。
{10} 表示 10 位数字
我感到非常不确定如何解释这一点,就像我对为什么正则表达式的顺序等方面的理解非常模糊。在此先感谢您的帮助/解释。
编辑
看起来这不是我想要的最好的正则表达式。另一种可能性是 [(][0-9]{3}[)] [0-9]{3}-[0-9]{4},但有人告诉我这会失败。我想我将不得不对正则表达式做更多的工作来解决这个问题。