目前我在做这个
phone_number.match(/^((\+44\s?|0)7([45789]\d{2}|624)\s?\d{3}\s?\d{3})$/);
以上情况在大多数情况下都很好。以下内容有效
077.14亿 4477.14亿
但是,我也想让44没有+例如
4477.14亿
我试过添加一个?在+和44之间适用于在线测试人员,但不是在我通过javascript执行时。
我将如何做到这一点?
由于
更新 我在JQuery Validation插件中使用它,这是代码
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。
答案 0 :(得分:1)
你写的正则表达式是正确的。
但是,您应该在字符串中的任何位置允许使用空格。最安全的方法是删除所有非数字字符(这也意味着您不必检查+
)。
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
的数字。