Необходимо быстрое регулярное выражение

Я хочу регулярное выражение, которое ПОЗВОЛЯЕТ только это:

 letter a-z
 case insensitive
 allows underscores
 allows any nrs

Как это должно быть записано?

Спасибо

5
задан Matt Ball 8 June 2010 в 16:11
поделиться

4 ответа

Это будет

\w

если я не ошибаюсь (Как выяснилось, это зависит от того: В PHP значение \w меняется в зависимости от локали, которая действует в данный момент). Вы можете использовать более явную форму, чтобы закрепить ее:

[A-Za-z0-9_]

я использую ее в контексте, добавьте начальный и конечный якоря и квантификатор, определяющий, сколько символов вы допустите:

^[A-Za-z0-9_]+$
7
ответ дан 18 December 2019 в 14:42
поделиться
if(preg_match('/^[0-9a-z_]+$/i', $string)) {
  //if it matches
}

else {
  //if it doesn't match
}

[0-9a-z_] - это класс символов, определяющий цифры от 0 до 9, буквы от a до z и символ подчеркивания. Символ i в конце делает совпадение нечувствительным к регистру. ^ и $ - это якоря, которые соответствуют началу и концу строки соответственно. + означает 1 или более символов.

0
ответ дан 18 December 2019 в 14:42
поделиться

PHP:

if (preg_match('/[^a-z0-9_]/i', $input)) {
  // invalid input
} else {
  // valid input
}

Таким образом, [a-z0-9_] - это набор символов для ваших допустимых символов. Добавление ^ спереди ([^a-z0-9_]) сводит его на нет. Логика такова: если любой символ совпадает с чем-то, чего нет в допустимом наборе символов, вход считается недопустимым.

Символ /i в конце делает совпадение нечувствительным к регистру.

5
ответ дан 18 December 2019 в 14:42
поделиться

Как это писать? (разбивая его на несколько строк)

/           # Start RegExp Pattern
 ^          # Match beginning of string only
 [a-z0-9_]* # Match characters in the set [ a-z, 0-9 and _ ] * = Zero or more times
 $          # Match end of string
/i          # End Pattern - Case Insensitive Matching

Предоставляя вам

if (preg_match('/^[a-z0-9_]*$/i', $input)) {
  // input is valid
}

Вы также можете использовать + вместо * , если вы хотите принудительно использовать хотя бы один символ.

1
ответ дан 18 December 2019 в 14:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: