适用于英国手机的Javascript正则表达式

时间:2015-11-10 16:46:59

标签: javascript regex

目前我在做这个

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。

1 个答案:

答案 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的数字。