如何解决PHP:preg_match
| 我只需要写一个除下划线和空格(1或大于1)的a-zA-Z0-9字符外的情况,并忽略所有其余字符。我编写了一个代码,但无法正常工作。 在那种情况下应该是错误的,但是显示OK1) test msg@
2) test@msg
3) test!msg
也应该可以,但目前显示错误。
1)测试消息-(两个空格)
我应该在代码.pls帮助中进行哪些更改,并在下面查看我的代码。
$message=$_GET[\'msg\'];
if(preg_match(\'/[^A-Za-z0-9]\\W/\',$message))
{
echo \"Wrong\";
}
else
{
echo \"OK\";
}
解决方法
这是riad留下的优化版本:
$message = $_GET[\'msg\'];
if ( preg_match(\'/^[a-z0-9_ ]+$/i\',$message) )
{
echo \'Ok\';
}
else
{
echo \'Wrong\';
}
由于使用了i修饰符,因此我从正则表达式中删除了A-Z(大写)。
我还想在您提供的示例中解释您做错了什么。
首先,将^放在方括号([])内,实际上与您尝试做的相反。在方括号内放置^表示“不包括”。
您缺少*,+或?在方括号的末尾,除非您只想匹配一个字符。 *字符表示0或更大,+表示1或更大,?表示0或1。
\\ W表示任何非单词字符。那可能不是您想要的。
最后,以^开头的正则表达式意味着要匹配的字符串的开头必须以^之后的任何内容开头。以$结尾的正则表达式意味着字符串必须以$之前的字符结尾。
因此,通过输入/ ^ [a-z0-9_] + $ / i表示匹配以a-z0-9_开头的字符串或至少包含那些字符(+)并以结尾的空格。
PHP有很多PCRE常规语法的文档,您可以在这里找到:http://ca2.php.net/manual/en/reference.pcre.pattern.syntax.php。
, $message=$_GET[\'msg\'];
if(preg_match(\'/^[a-zA-Z0-9_ ]+$/i\',$message))
{
echo \"Wrong\";
}
else
{
echo \"OK\";
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。