删除除数字,字母x和加号(正则表达式,PHP)之外的所有内容

Luk*_*een 4 php regex preg-replace

存在这个问题的许多变体,我尝试了一些生成器,但我似乎找不到与之匹配的正则表达式.假设我的电话号码看起来像"345-324-3243 X039"我想删除除数字,字母x和加号(显示在国际号码中)之外的所有内容.

这是我目前的非工作正则表达式和代码:

$phone = "345-324-3243 X039";
preg_replace('[^\d|x|\+]', '', $phone);
Run Code Online (Sandbox Code Playgroud)

我希望它出来"3453243243X039",但我得到"30234-2349".

小智 7

丢失|因为它是字符类中的文字,确保捕获大写的"X"(以及小写的"x"),使用正则表达式"/ quotes /"(否则它将其视为"[quotes]" )并使用结果:

$phone = "345-324-3243 X039";
$phone = preg_replace('/[^\dxX+]/', '', $phone);
// $phone is 3453243243X039
Run Code Online (Sandbox Code Playgroud)

快乐的编码.