2

我正在尝试验证用户是否正确输入了手机号码。为此,我编写了以下似乎有问题的正则表达式。手机号码可以可选地以+开头,可以有 可选的空格、圆括号、连字符 (-)。它不能包含任何字母任何其他字符

jQuery.validator.addMethod("mobileNumber", function(value,element) {
            return this.optional(element) ||  /(?:([+]))?[0-9]*/.test(value);
}, "Please enter a valid Contact Number");

以下输入应匹配,

+1-222

(+1) 222

+1222

2222

02-222

但这些不应该匹配。

1+222

AAA

AA12

2.2.2

我应该如何为上述标准编写正则表达式?

谢谢。

4

2 回答 2

3

尝试以下操作:

^(\+|\(\+)?\d+(\-|\)|\s)+?\d+

看到它在这里工作:http ://regexr.com?34sm1

于 2013-05-15T14:56:30.503 回答
0
// true
/^(\+[0-9]{1,2}\-|\(\+[0-9]{1,2}\)|\+[0-9]{1,2}|[0-9]{2}\-|)[0-9]+$/.test('+1-222');
/^(\+[0-9]{1,2}\-|\(\+[0-9]{1,2}\)|\+[0-9]{1,2}|[0-9]{2}\-|)[0-9]+$/.test('(+1)222');
/^(\+[0-9]{1,2}\-|\(\+[0-9]{1,2}\)|\+[0-9]{1,2}|[0-9]{2}\-|)[0-9]+$/.test('+1222');
/^(\+[0-9]{1,2}\-|\(\+[0-9]{1,2}\)|\+[0-9]{1,2}|[0-9]{2}\-|)[0-9]+$/.test('01-2222');
/^(\+[0-9]{1,2}\-|\(\+[0-9]{1,2}\)|\+[0-9]{1,2}|[0-9]{2}\-|)[0-9]+$/.test('86-2222');
/^(\+[0-9]{1,2}\-|\(\+[0-9]{1,2}\)|\+[0-9]{1,2}|[0-9]{2}\-|)[0-9]+$/.test('2222');

// false
/^(\+[0-9]{1,2}\-|\(\+[0-9]{1,2}\)|\+[0-9]{1,2}|[0-9]{2}\-|)[0-9]+$/.test('1+2342');
/^(\+[0-9]{1,2}\-|\(\+[0-9]{1,2}\)|\+[0-9]{1,2}|[0-9]{2}\-|)[0-9]+$/.test('+123-222');
/^(\+[0-9]{1,2}\-|\(\+[0-9]{1,2}\)|\+[0-9]{1,2}|[0-9]{2}\-|)[0-9]+$/.test('AAA');
/^(\+[0-9]{1,2}\-|\(\+[0-9]{1,2}\)|\+[0-9]{1,2}|[0-9]{2}\-|)[0-9]+$/.test('6786-2342');
于 2013-05-15T15:14:06.467 回答