PHP-Regex匹配if-ban命令
我在PHP中有这样一个正则表达式:PHP-Regex匹配if-ban命令,php,regex,Php,Regex,我在PHP中有这样一个正则表达式: $msg = "ban:Joan24@Jump123" // Jump123 = password, Joan24 = user if (preg_match($msg, "/ban:[A-Za-z0-9]@Jump123/")) // Not working -.- 如果它有效,它应该返回true,但它没有,为什么以及如何修复此问题?[^A-Za-z0-9]匹配除字母数字字符以外的所有字符 /BAN:[AZA ZO-99] +@ JAMP123/“”(没
$msg = "ban:Joan24@Jump123" // Jump123 = password, Joan24 = user
if (preg_match($msg, "/ban:[A-Za-z0-9]@Jump123/")) // Not working -.-
如果它有效,它应该返回true,但它没有,为什么以及如何修复此问题?
[^A-Za-z0-9]
匹配除字母数字字符以外的所有字符<代码> /BAN:[AZA ZO-99] +@ JAMP123/“”(没有字符类中的“上插入符号”)将匹配您的输入消息。似乎是可行的,尽管我不认为自己是专家:
if (preg_match($msg, "/ban:[A-Za-z0-9]+@Jump123/")) // Note the '+' after the alphanumeric for 1 or more characters
首先,preg_匹配是模式,可变的。 第二,模式必须介于简单的 如果希望用具体的字符模式完成正则表达式,可以添加。*。 您的模式尝试查找非角色
$msg = "ban:Joan24@Jump123"; // Jump123 = password, Joan24 = user
if (preg_match('/ban:[A-Za-z0-9].*@Jump123/',$msg )) {
print "TRUE";
} else {
print "FALSE";
}
$msg = "bOn:Joan24@Jump123"; // Jump123 = password, Joan24 = user
if (preg_match('/ban:[A-Za-z0-9].*@Jump123/',$msg )) {
print "TRUE";
} else {
print "FALSE";
}
$msg = "ban:1245@Jump123"; // Jump123 = password, Joan24 = user
if (preg_match('/ban:[A-Za-z0-9].*@Jump123/',$msg )) {
print "TRUE";
} else {
print "FALSE";
}
的正确语法为:
此外,正则表达式中的[A-Za-z0-9]
仅与A
到Z
,A
到Z
,0
到9
的字符匹配,您需要在字符类后放置一个
最终解决方案:(包括用于不区分大小写匹配的i
修饰符)
[^…]
表示这些字符中没有一个…禁止:[A-Za-z0-9]
它在之后匹配一个字符:
可能来自A-Z或A-Z或0-9
。要匹配一个或多个字符,必须在[A-Za-z0-9]之后添加+
符号
刚刚测试过,但似乎没有效果。我认为字母数字字符后面应该有一个“+”或“*”
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
$msg = 'ban:Joan24@Jump123';
if (preg_match('/ban:[a-z0-9]+@Jump123/i', $msg)) {
// do something
}