存在这个问题的许多变体,我尝试了一些生成器,但我似乎找不到与之匹配的正则表达式.假设我的电话号码看起来像“345-324-3243 X039”我想删除除数字,字母x和加号(显示在国际号码中)之外的所有内容.
这是我目前的非工作正则表达式和代码:
$phone = "345-324-3243 X039"; preg_replace('[^\d|x|\+]','',$phone);
我希望它出来“3453243243X039”,但我得到“30234-2349”.
解决方法
失去了|因为它是字符类中的文字,请确保捕获大写的“X”(以及小写的“x”),使用正则表达式“/ quotes /”(否则它将其视为“[quotes]”)和使用结果:
$phone = "345-324-3243 X039"; $phone = preg_replace('/[^\dxX+]/',$phone); // $phone is 3453243243X039
快乐的编码.