Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-Regex匹配if-ban命令_Php_Regex - Fatal编程技术网

PHP-Regex匹配if-ban命令

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/“”(没

我在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/“”(没有字符类中的“上插入符号”)将匹配您的输入消息。

似乎是可行的,尽管我不认为自己是专家:

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
}