我正在尝试使用以下规则验证名为phone_number的字段:
第一位数字应为3,然后是另外9个数字,总共10个数字,例如:3216549874
或者可以是7个数字1234567
这里是我的代码:
if (!($("#" + val["htmlId"]).val().match(/^3\d{9}|\d{7}/)))
missing = true;
为什么这个正则表达式不起作用:(我把它放到在线正则表达式检查器中显示良好。
我正在尝试使用以下规则验证名为phone_number的字段:
第一位数字应为3,然后是另外9个数字,总共10个数字,例如:3216549874
或者可以是7个数字1234567
这里是我的代码:
if (!($("#" + val["htmlId"]).val().match(/^3\d{9}|\d{7}/)))
missing = true;
您应该使用test而不是match,这里是正确的代码:
.test(/^(3\d{9}|\d{7})$/)
Match会查找所有出现的情况,而test仅检查是否至少有一个可用(从而验证您的数字)。
/^(3\d{9}|\d{7})$/.test('3216549874')
这里的 regexObj.test(str)
是什么意思? - retrovertigoif (!($("#" + val["htmlId"]).val().match(/^3\d{9}/|/\d{7}/)))
missing = true;
我曾经遇到过类似的问题,我的解决方案是这样写的:
if (/^(3\d{9}|\d{7})$/.test($("#" + val["htmlId"]).val()) == false) {
missing = true;
}
试试这个,它会更加严格一些。
.match(/^(3\d{9}|\d{7})$/)