Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于英国移动的Javascript正则表达式_Javascript_Regex - Fatal编程技术网

用于英国移动的Javascript正则表达式

用于英国移动的Javascript正则表达式,javascript,regex,Javascript,Regex,目前我正在这样做 phone_number.match(/^((\+44\s?|0)7([45789]\d{2}|624)\s?\d{3}\s?\d{3})$/); 上述方法在大多数情况下都很有效。像下面这样的事情是有效的 07714000000 +447714000000 但是,我还想允许44不带+e.g 447714000000 我试过添加一个?在+和44之间,这适用于在线测试人员,但当我通过javascript进行测试时就不行了 我该怎么做呢 谢谢 更新 我在JQuery验证插件中使用这

目前我正在这样做

phone_number.match(/^((\+44\s?|0)7([45789]\d{2}|624)\s?\d{3}\s?\d{3})$/);
上述方法在大多数情况下都很有效。像下面这样的事情是有效的

07714000000 +447714000000

但是,我还想允许44不带+e.g

447714000000

我试过添加一个?在+和44之间,这适用于在线测试人员,但当我通过javascript进行测试时就不行了

我该怎么做呢

谢谢

更新 我在JQuery验证插件中使用这个,这是代码

jQuery.validator.addMethod('mobileUK', function(phone_number, element) {
    return this.optional(element) || phone_number.length > 9 &&
        phone_number.match(/^((\+?44\s?|0)7([45789]\d{2}|624)\s?\d{3}\s?\d{3})$/);
}, 'Please specify a valid mobile number');

它在没有?的情况下正常工作,但与44不匹配。

您编写的正则表达式是正确的

但是,您可能应该在字符串中的任何位置允许空格。最安全的方法是去除所有非数字字符(这也意味着您不必检查
+

例子
var mobileNumberRegex=/^(?(?:00)?44 | 0)7(?[45789]\d{2}624)\d{6}$/;
if(phoneNumber.replace(/\D/g.).test(mobileNumberRegex))警报(电话号码有效!');

注意:上面的正则表达式也接受格式化为
00447714000000

的数字,在的JavaScript模式下似乎可以?你能展示你实际的JavaScript代码吗?只要你逃过了
\+?
,没有理由你不能添加一个量词。你必须摆脱锚定
^$
肯定有效。一定是别的原因。如图所示,请添加更多代码。我已经更新了op