我想以这种方式找到一个正则表达式:
我在$ sms变量中有一条SMS消息的正文。我将得到一个字符串:
- parenthesis
- the non alphanumeric character )([]#@*^?!|"&% and remove the other that remain
- all alphanumeric character and numeric
这是因为我的短信网关机器有一些问题,它没有提供带有此字符的消息,经常在意大利语中用来枚举数字。
我需要使用PHP来做到这一点,但只有正则表达式才能提供很好的帮助。
$newSMS = preg_replace('/[^)(\[\]#*^?!|"&%a-zA-Z0-9]/', '', $sms);
正则表达式匹配任何一个字符([...]
),它不是(^
)在你描述的字符()(\[\]#*^?!|"&%a-zA-Z0-9
)中,并用空字符串''
替换它们,这与删除它们基本相同。这个正则表达式可以缩短为:
/[^)(\[\]#*^?!|"&%a-z\d]/i
通过使用\d
代表0-9
和不区分大小写的模式(i
),这样我们就不必重复这些字母,但节省的费用很少,特别是因为PHP的数字无论如何都是ASCII。