正则表达式 - 简单的电话号码

Iam*_*ksy 7 regex

我知道有很多关于如何匹配某些电话号码类型的正则表达式示例.对于我的例子,我只想允许数字和一些特殊字符.我再次遇到这个困难.

应该允许的电话号码可以采用这些形式

5555555555
555-555-5555
(555)5555555
(555)-555-5555
(555)555-5555 and so on
Run Code Online (Sandbox Code Playgroud)

我只想要一些允许[0-9]和特殊字符'(',')'和' - '的东西

到目前为止我的表情看起来像这样

/^[0-9]*^[()-]*$/
Run Code Online (Sandbox Code Playgroud)

我知道这是错的,但逻辑上我认为这意味着允许数字0-9或允许字符(,)和 - .

Tot*_*oto 5

这匹配你想要的数字,(,)和 -

/^[0-9()-]+$/
Run Code Online (Sandbox Code Playgroud)


Ama*_*osh 5

^(\(\d{3}\)|\d{3})-?\d{3}-?\d{4}$
Run Code Online (Sandbox Code Playgroud)
  • \(\d{3}\)|\d{3}三个数字带或不带()-更简单的正则表达式会\(?\d{3}\)?,但将允许(555-5555555555)5555555等.
  • 可选-后跟三位数
  • 可选-后跟四位数字

请注意,这将仍然允许555555-5555555-5555555-我不知道,如果这些都属于你部分


Don*_*ner 1

^为什么里面会有一只流浪狗?我认为你的意思[()-]是这实际上使你必须在正则表达式中有两个字符串开头,它们永远不会匹配。

另外,\d是一个很好的快捷方式[0-9]。它们是完全相同的。

另外,这只会匹配一堆数字,然后是一堆(or)-。比如:1294819024()()()()()-----()-会匹配。我认为你希望整个事情能够重复,比如:^(\d*[()-]*)*$。现在,您可以匹配此重复序列。

现在,重要的是要注意嵌套*通常效率低下,我们可以意识到我们只是想匹配任何数字和您想要的标点符号:[\d()-]*