PHP проверяет, содержит ли строка максимум 30 букв / цифр в последовательности с preg_match

Я застрял здесь и не могу найти никаких результатов по моему вопросу, возможно, потому что английский не мой родной язык.

Я хочу сопоставить строки, которые содержат максимум 30 букв / цифр в последовательности:

Это возможно даже с 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

3

Решение

Возможно, вы захотите узнать, есть ли 30 или более таких персонажей с:

preg_match("/[A-Za-z0-9]{30,}/", $string)

Смотрите матчи жирным шрифтом:

1234567890123456789012345678901234567890
sdfihsgbfsadiousdghiug
cfgvsdfsdf786sdf78s9d8g7stdg87stdg78tsd7g0tsd9g7t
65656.sdfsdf.sdfsdf
ewrwet_t876534875634875687te8 — 7r9w358wt3587tw3587
sd879dtg87dftg87dftg87ftg87tfg087tfgtdf8g7tdf87gt8t___454

http://regexr.com/3arj2

И затем отрисуем результат:

preg_match("/[A-Za-z0-9]{30,}/", $string) === 0
// returns 0 if no match
// or FALSE if error
5

Другие решения

Если вы не хотите сопоставлять буквенно-цифровые строки длиной более 30 символов, вам необходимо сопоставить не алфавитно-цифровой символ в конце и начале выражения

preg_match("/[^A-Za-z0-9][A-Za-z0-9]{1,30}[^A-Za-z0-9]/", $string);
2

Ни один из ваших примеров не будет соответствовать, ваше регулярное выражение неверно. Вам нужно ^ вне класса символов, внутри него означает исключить. Если ничего не введено, это должно работать. Если не изменить 0 к 1,

preg_match("/^[A-Za-z0-9]{0,30}/", $string)
1
По вопросам рекламы [email protected]