面具输入手机号码JavaScript

时间:2014-11-18 21:15:52

标签: javascript expression mask

我需要开发一个输入数字模式,必须从数字2开始,仍然有6位数字或以“(012)2”和6位数字开头,或者作为“290-53-21”我制作数字和起始数字2,以及短划线( - ),但我不能在“(012)”如何写它? 我的代码:

function checkNumber(str){
    if(!str.length)
         alert("error");
     var tmp = new RegExp("(2?|\([032]{3}\)?)[0-9-]{6,9}");
     str = str.replace(tmp, "");
     if(str != "")
         alert("error");
}

2 个答案:

答案 0 :(得分:1)

这个似乎可以解决问题:

^(((\(012\))\d|2)\d{6}|2\d{2}(-\d{2}){2})$

就是这样:

  • ^和$是开始和结束......
  • 正则表达式与此^( x | y )$
  • 类似
  • 其中x是((\(012\))\d|2)\d{6},这将匹配(012)d或a 2 ((\(012\))\d|2)\d{6}
  • 的6位数字
  • ,其中y为2\d{2}(-\d{2}){2}2后跟2位\d{2},后跟两次-dd (-\d{2}){2}

答案 1 :(得分:-1)

var t = /^(?:\(012\))?2(?:\d{6}|\d{2}(?:-\d{2}){2})$/
t.test(2123456); // true
t.test('212-31-23'); // true
t.test('(012)212-31-23'); // true
t.test('(012)2123123'); // true
t.test('(012)212-34-56'); // true

t.test('((012)2123456245-11-11'); // false

以下是它的工作原理:

/ ^ - 表示开始

(?:( 012))? - 接受(012)或不接受

2 - 最初的2

(?:A | B) - 接受6位数字,如下所示:' aaaaaa'或者' aa-aa-aa'

其中A = \ d {6}

和B = \ d {2}(?: - \ d {2}){2}

希望这有帮助。