目前我正在做这个
phone_number.match(/^((+44s?|0)7([45789]d{2}|624)s?d{3}s?d{3})$/);
以上内容在大多数情况下都很有效。以下内容是有效的
07714000000+447714000000
然而,我也想允许44没有+例如
447714000000
我试着添加了一个?介于+和44之间,这适用于在线测试人员,但当我通过javascript进行测试时就不适用了。
我该怎么做?
感谢
更新我在JQuery验证插件中使用了这个,这是代码
jQuery.validator.addMethod('mobileUK', function(phone_number, element) {
return this.optional(element) || phone_number.length > 9 &&
phone_number.match(/^((+?44s?|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)) alert('Phone number is valid!');
注意:上面的正则表达式也接受格式为00447714000000
的数字