Perl регулярное выражение ровно 10 символов - PullRequest
4 голосов
/ 27 июня 2011

Я использую регулярные выражения в PHP с функцией preg_match. Я хочу проверить ключ, который точно равен 10 символам, с прописными буквенными символами или числами.

У меня есть

preg_match( '/[^A-Z0-9]/', $key);

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

preg_match( '/[^A-Z0-9]{10}$/', $key);

что соответствует всем моим тестовым строкам, даже недействительным.

Как мне указать это регулярное выражение?

1 Ответ

8 голосов
/ 27 июня 2011

Вы не поместили символ ^, который привязывает начало строки./[^A-Z0-9]{10}$/ будет соответствовать всем файлам, заканчивающимся на 10 символов, которые не являются заглавными буквами и цифрами.

Правильное RE будет:

preg_match( '/^[A-Z0-9]{10}$/', $key);

Объяснение регулярного выражения:

  • ^ - соответствует началу строки
    • [ - начало класса символов, символ должен совпадать с ними.Если ^ найден сразу после этого [, он отменяет совпадение
      • A-Z - заглавные буквы
      • 0-9 - цифры
    • ] - конец класса символов
    • {10} - соответствует предыдущему классу символов 10 раз
  • $ - соответствует строке доконец
...