用于英国移动的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