JavaScript正则表达式使用val().match()方法

6

我正在尝试使用以下规则验证名为phone_number的字段:

第一位数字应为3,然后是另外9个数字,总共10个数字,例如:3216549874

或者可以是7个数字1234567

这里是我的代码:

        if (!($("#" + val["htmlId"]).val().match(/^3\d{9}|\d{7}/)))
            missing = true;

为什么这个正则表达式不起作用:(我把它放到在线正则表达式检查器中显示良好。

有点太多的“val”了吗?val[]和val()。 - mplungjan
4个回答

6

您应该使用test而不是match,这里是正确的代码:

.test(/^(3\d{9}|\d{7})$/)

Match会查找所有出现的情况,而test仅检查是否至少有一个可用(从而验证您的数字)。


如果 (!($("#" + val["htmlId"]).val().test(/^(3\d{9}|\d{7})$/))) 不起作用。 - alexistkd
如果您的jQuery代码出现问题,请在Firebug控制台中进行测试,如下所示:'3216549874'.test(/^(3\d{9}|\d{7})$/)。 - alessioalex
我有另一句话:else if (tipPersoana == 1 && key == 2) { if (!($("#" + val["htmlId"]).val().match(/[a-zA-Z]|\d{1,12}/))) missing = true; } - alexistkd
@alessioalex /^(3\d{9}|\d{7})$/.test('3216549874') 这里的 regexObj.test(str) 是什么意思? - retrovertigo

2

是的,我有另一个规则像 /.+/ 并且如果 (!($("#" + val["htmlId"]).val().match(/[a-zA-Z]|\d{1,12}/))) 也可以工作。 - alexistkd

2

我曾经遇到过类似的问题,我的解决方案是这样写的:

if (/^(3\d{9}|\d{7})$/.test($("#" + val["htmlId"]).val()) == false) {
    missing = true;
}

1

试试这个,它会更加严格一些。

.match(/^(3\d{9}|\d{7})$/)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接