到目前为止,我有一个用于验证表单中的电话号码:
/^\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
应该是可选的,就像我上面的代码一样。
任何想法?谢谢!
首先,您可以将所有实例替换[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]
尝试:
/^\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';