为电话号码创建正则表达式

时间:2016-07-01 08:53:09

标签: javascript regex validation

我想在javascript中为以下电话号码创建一个正则表达式验证检查:

26481 3654562

26481 5689245

26485 3654562

26485 5689245

26461 253425

26461 598756

081 1265984

085 1265984

061 653265

  

注意:粗体部分必须在那里。之后的数字被接受。以+26461和061开头的数字必须比+26481或+24685和081或085少一个数字。

目前的努力:/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/

2 个答案:

答案 0 :(得分:0)

这将匹配任何示例:

var res = str.match(/^[+]?[(]?(?:264|0)(?:81|85|61)[)]?[\s.-]?[0-9]{3}[\s.-]?[0-9]{3,4}$/);

粗体的那些部分通过OR |

强制执行

强制* 61少一个号码? 那么正则表达式会变得更长一些:

^[+]?[(]?(?:264|0)(?:(81|85)(?=(?:[^0-9]*[0-9]){7}$)|61(?=(?:[^0-9]*[0-9]){6}$))[)]?[\s.-]?[0-9]{3}[\s.-]?[0-9]{3,4}$

之后的积极前瞻将强制执行81,85,61之后的总数。

答案 1 :(得分:0)

这样的东西?

^(\+26461(\d{6})|\+2648(\d{8})|08(1|5)(\d{7})|061(\d{6}))$

+26461(\ d {6})第一组26461

+2648(\ d {8}第二组2648

08(1 | 5)(\ d {7})第3组为081或085

061(\ d {6})最后一组为061