我正在尝试使用 preg_match 创建一个正则表达式,它可以检测具有以下要求的字符串:
我认为我知道如何单独实现每个要求(也许其中一个是错误的),我的问题是我不知道如何在一个表达式中连接所有内容。
以下场景必须返回1(或true)。
$string1 = "Mega/lodon";
$string2 = "Megalo.don";
$string3 = "Me@galo/doing";
以下场景必须返回0(或false)。
$string4 = "Meg@loz=on";
$string5 = "Meglo*don";
$string6 = "Megzlodonx";
$string7 = "=egalodoing";
这就是我正在尝试的:
preg_match("/[a-zA-Z]{10,}.[\/.@]?.[^=*xyz]/", $string1);
您可以使用:
^(?=.*[\/.@])[^=*_xyz]{10,}$
这里:
^(?=.*[\/.@])
- 检查字符串开头 (^
) 某处是否有任何符号:/
,.
,@
,[^=*_xyz]{10,}
- 检查您的行是否至少有 10 个符号,并且不包含任何 *
、_
、x
、y
、z
、$
- 字符串末尾的标记,以便在前 10 个“好”符号之后无法匹配禁止符号。