提问人:Ricardo Castañeda 提问时间:3/26/2023 更新时间:3/26/2023 访问量:64
PHP中的正则表达式,具有字符范围,但不包括特定的字符
Regular expression in PHP, with range of characters, but that excludes specific ones
问:
我正在尝试创建一个带有preg_match的正则表达式,该表达式可以检测具有以下要求的字符串:
- 必须至少包含 10 个字符。
- 必须至少存在以下项之一:/(斜杠)。(点)@(阿罗巴)。
- 不得包含以下任何字母:=、*、_、x、y、z
我认为我知道如何单独实现每个要求(也许其中一个是错误的),我的问题是我不知道如何在一个表达式中连接所有要求。
- [a-ZA-Z]{10,}
- [/.@]
- [^=*_xyz]
以下方案必须返回 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);
答:
4赞
markalex
3/26/2023
#1
您可以使用:
^(?=.*[\/.@])[^=*_xyz]{10,}$
这里:
^(?=.*[\/.@])
- 检查在 string() 开头的某处是否有任何符号:,,,^
/
.
@
[^=*_xyz]{10,}
- 检查您的行是否至少包含 10 个符号,并且不包含任何,,,,,*
_
x
y
z
$
- 字符串末尾的标记,以便在前 10 个“好”符号之后无法匹配禁止的符号。
评论