-1

到目前为止,我有一个用于验证表单中的电话号码:

/^\s*\+?\s*([0-9]+\s*)+\s*(\((\+?[0-9]+\s*)+\))?\s*[0-9-\s]*[0-9]\s*$/

它适用于那些数字:+021 (+12) 113-2145但我需要像这样在它的末尾添加一个扩展名:+021 (+12) 113-2145 x 123那么我怎样才能添加 charx和之后的数字?

和数字之间的空格也x应该是可选的,就像我上面的代码一样。

任何想法?谢谢!

4

2 回答 2

2

首先,您可以将所有实例替换[0-9]为更短的\d. (对于十进制数字)

然后,将其添加到原始正则表达式中:

(x\s*[\d]{3})?

所以它会是

/^\s*\+?\s*([\d]+\s*)+\s*(\((\+?[\d]+\s*)+\))?\s*[\d-\s]*[\d]\s*(x\s*[\d]{3})?$/

编辑:使扩展成为可选

编辑2:使用\d而不是[0-9]

于 2012-08-23T23:57:35.763 回答
1

尝试:

/^\s*\+?\s*([0-9]+\s*)+\s*(\((\+?[0-9]+\s*)+\))?\s*[0-9-\s]*[0-9]\s*(x\s*[0-9]+)?$/;

补充: (x\s*[0-9]+)?; 编辑:

$pattern = '/^\s*\+?\s*([0-9]+\s*)+\s*(\((\+?[0-9]+\s*)+\))?\s*[0-9-\s]*[0-9]\s*(x\s*[0-9]+)?$/';
$subject = '+021 (+12) 113-2145 x 123';
if(preg_match($pattern, $subject))
    echo 'matched';
于 2012-08-23T23:55:42.760 回答