Я хочу использовать preg_match для соответствия номерам 1 - 21. Как это сделать с помощью preg_match? Если число больше 21, я не хочу ничего сопоставлять.PHP preg_match range
example preg_match('([0-9][0-1]{0,2})', 'Johnathan 21');
Я хочу использовать preg_match для соответствия номерам 1 - 21. Как это сделать с помощью preg_match? Если число больше 21, я не хочу ничего сопоставлять.PHP preg_match range
example preg_match('([0-9][0-1]{0,2})', 'Johnathan 21');
Скопировано из comment above:
Я предлагаю соответствие просто ([0-9]{1,2})
(возможно, завернутые в \b
основе на входном формате) и фильтрации числового значения позже, в PHP-коде.
См. Также Raymond Chen's thoughts on the subject.
Спасибо. Я использовал '\ d +' для сопоставления числа в массив, затем я подтвердил, что это было между 1 - 21. – James
Дословно:
preg_match('~ (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21)$~', 'Johnathan 21');
Но, возможно, это более изящное:
preg_match('~ ([1-9]|1[0-9]|2[01])$~', 'Johnathan 21');
Я не думаю, что вам нужно ограничивать действительные решения только для регулярного выражения, другие подходы (например, захват '[0-9] {1,2}' в regexp и проверка после этого) могут быть проще. http://blogs.msdn.com/b/oldnewthing/archive/2006/05/22/603788.aspx – DCoder
@DCoder: Это должен быть ответ. –
Правда. Я думал, что гораздо проще использовать регулярное выражение. – James