我试图使用正则表达式从一个字符串中去除所有非允许字符。这是我当前的php代码。
当我运行这段代码时,表情符号被打印出来了,但我希望它打印出“字符串为空”。当我把我的正则表达式代码放到http://regexr.com/中时,它显示表情符号不匹配,但当我运行代码时,它会被打印出来。有什么建议吗?
$input = "";
$pattern = "[a-zA-Z0-9_ !@#$%^&*();\\\/|<>\"'+\-.,:?=]";
$message = preg_replace($pattern,"",$input);
if (empty($message)) {
echo "The string is empty";
}
else {
echo $message;
}
当我运行这段代码时,表情符号被打印出来了,但我希望它打印出“字符串为空”。当我把我的正则表达式代码放到http://regexr.com/中时,它显示表情符号不匹配,但当我运行代码时,它会被打印出来。有什么建议吗?
[^!-]~";它更简单且具有相同的目的。我们可以在正则表达式中使用不同于通常的a-z
和0-9
的范围。 - yeyo[^!〜-]
或[^-!~]
。 - Amal Murali-
应该放在中间。[^!-~]
匹配任何不属于ASCII范围的单个字符!
到~
。换句话说,[^!-~]
等同于表达式[^a-zA-Z0-9_ !@#$%^&*();\\\/|<>\"'+.,:?=-]
。试试吧 :) - yeyoé
),这对许多非英语语言来说是有问题的。 - Bruno