我将07X XXXX XXX用作数字的正则表达式是什么?

时间:2016-11-04 21:59:38

标签: javascript regex

我有一个电话号码,我希望数字07是常数,然后剩下的应该是正则表达式?

我看起来像这样:/^\07(?([0-9]{1})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/

示例编号:0752 8182 12

3 个答案:

答案 0 :(得分:3)

我建议修改你的模式

/^07\(?([0-9])\)?[-. ]?([0-9]{4})[-. ]?([0-9]{3})$/

请参阅regex demo

您在第一个\之前错过了(,而\07的反斜杠使得正则表达式引擎将07部分解析为八进制值。

模式详情

  • ^ - 字符串开头
  • 07 - 07
  • \(? - 可选的(注意,如果您不想允许{{1}等值,则需要将其与\)?一起删除}})
  • 07(5) 4444 333 - 如果您不需要获取捕获的子文本,则可以删除([0-9])(数字。
  • ) - 可选的\)?
  • ) - 可选的[-. ]?-或空格
  • . - 4位数(关于括号的相同注释)
  • ([0-9]{4}) - 同上
  • [-. ]? - 3位数(关于括号的相同注释)
  • ([0-9]{3}) - 字符串结束。

答案 1 :(得分:1)

我清理了你的正则表达式,你不需要加上那些额外的括号,除非你正在对群组做些什么:

/^07\(?[0-9]\)?[-. ]?[0-9]{4}[-. ]?[0-9]{3}$/

会匹配这些数字

071 1111 111
077.1151.111
071-3211-121
0711111111
07(1) 1111 111

答案 2 :(得分:1)

您没有提供有效和无效数字的示例,我猜是基于您的正则表达式。试试这个:

var numbers = [
    "0701234123",
    "070 1234 123",
    "070-1234-123",
    "070.1234.123",
    "07(0)1234-123",
    "07(0) 1234-123",
    "0070 1234 123",
    "070 123 1234"
];

//var pattern = /^07\(?([0-9]{1})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
var pattern = /^07\(?\d\)?[-. ]?\d{4}[-. ]?\d{3}$/;
//   /d = [0-9]
var matched = numbers.map(function (number) {
    var matches = number.match( pattern );
    if (matches) {
        console.log(number + " valid");
    } else {
        console.log(number + " invalid");
    }
});

输出是:

0701234123 valid
070 1234 123 valid
070-1234-123 valid
070.1234.123 valid
07(0)1234-123 valid
07(0) 1234-123 valid
0070 1234 123 invalid
070 123 1234 invalid