PHP preg_match 接受新行
我想通过 PHP preg_match 函数传递每个帖子/字符串。我想接受所有字母数字和一些特殊字符。帮助我编辑语法以允许换行。当用户填写文本区域并按回车键时。以下语法不允许换行。
请反馈以下特殊字符是否正确完成
*/_:,.?@;-*
if (preg_match("/^[0-9a-zA-Z \/_:,.?@;-]+$/", $string)) {
echo 'good';
else {
echo 'bad';
}
最佳答案
你快到了!
其他人提到的 DOTALL
修饰符与您的正则表达式无关。
要允许换行,我们只需将 \r\n
添加到您的字符类中。您的代码变为:
if (preg_match("/^[\r\n0-9a-zA-Z \/_:,.?@;-]+$/", $string)) {
echo 'good';
else {
echo 'bad';
}
请注意,这个测试和正则表达式可以用更简洁的方式编写:
echo (preg_match("~^[\r\n\w /:,.?@;-]+$~",$string))? "***Good!***" : "Bad!";
查看 online demo 的结果在底部。
\w
匹配字母、数字和下划线,所以我们可以在字符类中去掉它们- 将分隔符更改为
~
允许您使用/
斜杠而不对其进行转义(您需要转义分隔符)
关于允许换行的 PHP 正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24358686/