function isUserID($username) { if (preg_match('/^[az\d_]{2,20}$/i', $username)) { return true; } else { return false; } }
Легкий …, у меня есть это, вы можете объяснить, что он проверяет? Я знаю, что он проверяет, имеет ли имя пользователя длину от 2 до 20, что еще? благодаря
Он ищет текст, содержащий только буквенно-цифровые и символы подчеркивания длиной от 2 до 20 символов.
/ ^ [Аг \ d _] {2,20} $ / я
| |
| |
|| i: нечувствительность к регистру
| |
| /: конец регулярного выражения
| |
$: конец текста
| | || {2,20}: повторяется от 2 до 20 раз
| | |]: группа концевых символов
| | _ : нижнее подчеркивание
| \ d: любая цифра
az: 'a' через 'z'
|| [: начать группу символов
| ^: начало текста
/: запуск регулярного выражения
/^[az\d_]{2,20}$/i
Скремблирование:
/ является разделителем регулярных выражений; вы можете выбрать все, что захотите, но наиболее часто встречающаяся косая черта.
^ означает «начало начала ввода»: следующее выражение должно быть в начале для соответствия регулярному выражению.
[az\d_] – класс символов; это означает «любой символ между квадратными скобками»; обратная косая черта, объединенная с d, является ярлыком для «цифр», а тире – включенным диапазоном; таким образом, класс символов говорит «любая буква или цифра или символ подчеркивания».
{2;20} – квантификатор, который говорит, что предыдущее выражение (класс символов) должно повторяться от 2 до 20 раз.
$ означает «конец конца ввода», аналогичный ^.
Другое / завершает сам регулярное выражение; Далее следуют варианты шествия, в этом случае i , что означает «нечувствительность к регистру».
Он проверяет, чтобы имя пользователя состояло из 2-20 символов, которые являются буквами (в верхнем или нижнем регистре с помощью флага i ), номерами или символом подчеркивания.
Это может быть сокращено двумя способами: во-первых, конструкция if не нужна. Во-вторых, вы можете использовать \w как замену тем же символам, поэтому:
function isUserID($username) { return preg_match('/^\w{2,20}$/', $username); }
Он буквально проверяет, состоит ли $username из последовательности от 2 до 20 символов a – z , A – Z (из-за флага i для нечувствительности к регистру), 0 – 9 (для \d ) и _ .
Он также проверяет, содержит ли он какие-либо символы, кроме алфавита, az и AZ, цифры 0-9 и _.
Или вы могли бы сказать, проверяя, что он содержит только буквенно-цифровые символы и _.
Это также можно переписать, чтобы быть более простым: preg_match возвращает int, поэтому нет причин использовать шаблон «return false, return true».
function isUserID($username){ return (bool)preg_match('/^[az\d_]{2,20}$/i', $username); }
Сделал бы то же самое.
Кроме того, \w означает то же самое, что и эти символы. Буквы, цифры и символ подчеркивания. Так что даже лучше было бы
function isUserID($username){ return (bool)preg_match('/^[\w]{2,20}$/i', $username); }
Он проверяет нечувствительное к регистру буквенное слово длиной 2-20 символов, состоящее из букв, цифр и _