到目前为止我用这个用于验证我的表格中的电话号码:
/^\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
所以如何添加char x
之后数字?
x
和数字之间的空格也应该是可选的,就像我上面的代码一样。
任何想法?谢谢!
答案 0 :(得分: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]
答案 1 :(得分: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';