繁体   English   中英

掩码输入电话号码JavaScript

[英]Mask input the phone number JavaScript

我需要开发一种输入数字的模式,必须以数字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");
}

这似乎可以解决问题:

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

就像这样:

  • ^和$是开始和结束...
  • 正则表达式是这样的^( x | y )$
  • 其中x是((\\(012\\))\\d|2)\\d{6} ,这将匹配(012)d或2与((\\(012\\))\\d|2)和6位与\\d{6}
  • 并且其中y是2\\d{2}(-\\d{2}){2} ,对于2后面跟2个数字\\d{2} ,然后是两次-dd (-\\d{2}){2}
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}

希望有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM