需要与以下标准匹配的特定英国电话验证正则表达式

Need specific UK telephone validation regex matching to below criteria

本文关键字:英国 电话 正则表达式 验证 下标 标准      更新时间:2023-09-26
  1. 最小字符数(不包括空格(为 11,最大值为 13。
  2. 如果用户输入的电话号码以"07"或"+447"以外的内容开头,则最少字符数为 10,最大值为 13。
  3. 用户可以输入空格。

以下数字应通过正则表达式

  • 07424689253 (11(
  • +447424689253 (13(
  • 02049533525 (11(
  • 0169773355 (10(

我已经写了这个正则表达式,但不起作用。请帮忙

/^('(?(0|'+44)[1-9]{1}'d{1,4}?')?'s?'d{3,4}'s?'d{3,4})$/

试试这个

/^'s*(?:'+44(?:'s*'('s*0's*'))?|0)'s*(7(?:'s*'d){9}|(?='d)[^7](?:'s*'d){8,9})'s*$/
//    ^-------------A------------^    ^-----B-----^ ^-----------C----------^
  • A 是国际/国内代码,即 +440+44 (0),请考虑添加00440044 (0)
  • B 是手机号码,7后跟 9 位数字
  • C 是座机号码,非 7 后跟 8 或 9 位数字,考虑分成区域组

+44外,整个活动都允许有空格

有一个捕获组,它会给你B或C的结果,具体取决于匹配项


例子

var re = /^'s*(?:'+44(?:'s*'('s*0's*'))?|0)'s*(7(?:'s*'d){9}|(?='d)[^7](?:'s*'d){8,9})'s*$/;
// Mobile
'+44 (0) 712 345 6789'.match(re); // ["+44 (0) 712 345 6789", "712 345 6789"]
'+44 712 345 6789'.match(re);     // ["+44 712 345 6789",     "712 345 6789"]
'0712 345 6789'.match(re);        // ["0712 345 6789",        "712 345 6789"]
// Landline
'020 4 953 3525'.match(re); // ["020 4 953 3525", "20 4 953 3525"]
'016 977 3355'.match(re);   // ["016 977 3355",   "16 977 3355"]

此处使用的有用正则表达式模式

  • (?:pattern) 非捕获组;此模式是一个组,但未单独捕获
  • (?:'s*'d){9} 任意数量的空格后跟一个数字,9 次
  • (?=pattern) 展望;查看接下来pattern是否匹配,但不匹配
  • (?='d)[^7],如果下一个字符是数字,则匹配下一个字符(如果不是7