我需要开发一个输入数字模式,必须从数字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");
}
答案 0 :(得分:1)
这个似乎可以解决问题:
^(((\(012\))\d|2)\d{6}|2\d{2}(-\d{2}){2})$
就是这样:
^( x | y )$
((\(012\))\d|2)\d{6}
,这将匹配(012)d或a 2
((\(012\))\d|2)
和\d{6}
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}
希望这有帮助。