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



目前我正在做这个

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的数字

最新更新