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 символов, состоящее из букв, цифр и _