PHP 检查字符串是否在 preg_match 的序列中最多包含 30 letters/numbers
PHP check if string contains maximum 30 letters/numbers in a sequence with preg_match
我被困在这里,找不到我的问题的任何结果,可能是因为英语不是我的母语。
我想匹配序列中最多包含 30 letters/numbers 行:
preg_match 这甚至可能吗?
preg_match("/[^A-Za-z0-9](max 30 in a sequence)/", $string)
字符串:
$string = "1234567890123456789012345678901234567890"; // FALSE
$string = "sdfihsgbfsadiousdghiug"; // TRUE
$string = "cfgvsdfsdf786sdf78s9d8g7stdg87stdg78tsd7g0tsd9g7t"; // FALSE
$string = "65656.sdfsdf.sdfsdf"; // TRUE
$string = "ewrwet_t876534875634875687te8---7r9w358wt3587tw3587"; // TRUE
$string = "sd879dtg87dftg87dftg87ftg87tfg087tfgtdf8g7tdf87gt8t___454"; // FALSE
您可能想查找是否有 30 个或更多这些字符:
preg_match("/[A-Za-z0-9]{30,}/", $string)
查看以粗体显示的匹配项:
1234567890123456789012345678901234567890
sdfihsgbfsadiousdghiug
cfgvsdfsdf786sdf78s9d8g7stdg87stdg78tsd7g0tsd9g7t
65656.sdfsdf.sdfsdf
ewrwet_t876534875634875687te8---7r9w358wt3587tw3587
sd879dtg87dftg87dftg87ftg87tfg087tfgtdf8g7tdf87gt8t___454
然后取反结果:
preg_match("/[A-Za-z0-9]{30,}/", $string) === 0
// returns 0 if no match
// or FALSE if error
您的所有示例都不匹配,您的正则表达式不正确。你需要字符 class 外面的 ^
,里面的意思是排除。如果输入的内容无效,这应该可以工作。如果不是,请将 0
更改为 1
。
preg_match("/^[A-Za-z0-9]{0,30}/", $string)
如果您不想匹配长度超过 30 个字符的字母数字字符串,则需要在表达式的结尾和开头匹配非字母数字字符
preg_match("/[^A-Za-z0-9][A-Za-z0-9]{1,30}[^A-Za-z0-9]/", $string);
我被困在这里,找不到我的问题的任何结果,可能是因为英语不是我的母语。
我想匹配序列中最多包含 30 letters/numbers 行:
preg_match 这甚至可能吗?
preg_match("/[^A-Za-z0-9](max 30 in a sequence)/", $string)
字符串:
$string = "1234567890123456789012345678901234567890"; // FALSE
$string = "sdfihsgbfsadiousdghiug"; // TRUE
$string = "cfgvsdfsdf786sdf78s9d8g7stdg87stdg78tsd7g0tsd9g7t"; // FALSE
$string = "65656.sdfsdf.sdfsdf"; // TRUE
$string = "ewrwet_t876534875634875687te8---7r9w358wt3587tw3587"; // TRUE
$string = "sd879dtg87dftg87dftg87ftg87tfg087tfgtdf8g7tdf87gt8t___454"; // FALSE
您可能想查找是否有 30 个或更多这些字符:
preg_match("/[A-Za-z0-9]{30,}/", $string)
查看以粗体显示的匹配项:
1234567890123456789012345678901234567890
sdfihsgbfsadiousdghiug
cfgvsdfsdf786sdf78s9d8g7stdg87stdg78tsd7g0tsd9g7t
65656.sdfsdf.sdfsdf
ewrwet_t876534875634875687te8---7r9w358wt3587tw3587
sd879dtg87dftg87dftg87ftg87tfg087tfgtdf8g7tdf87gt8t___454
然后取反结果:
preg_match("/[A-Za-z0-9]{30,}/", $string) === 0
// returns 0 if no match
// or FALSE if error
您的所有示例都不匹配,您的正则表达式不正确。你需要字符 class 外面的 ^
,里面的意思是排除。如果输入的内容无效,这应该可以工作。如果不是,请将 0
更改为 1
。
preg_match("/^[A-Za-z0-9]{0,30}/", $string)
如果您不想匹配长度超过 30 个字符的字母数字字符串,则需要在表达式的结尾和开头匹配非字母数字字符
preg_match("/[^A-Za-z0-9][A-Za-z0-9]{1,30}[^A-Za-z0-9]/", $string);