im пытается сделать регулярное выражение, но не может понять так хорошо.Регулярное выражение для диапазона чисел
Что я хочу, чтобы ввести следующее:
09XYZZZZZZ
Где X от 6 до 9, Y 1 до 9, и Z 0 до 9. Все вместе, длина всего 12 цифр.
Спасибо!
im пытается сделать регулярное выражение, но не может понять так хорошо.Регулярное выражение для диапазона чисел
Что я хочу, чтобы ввести следующее:
09XYZZZZZZ
Где X от 6 до 9, Y 1 до 9, и Z 0 до 9. Все вместе, длина всего 12 цифр.
Спасибо!
Решение в значительной степени зависит от типа используемого регулярного выражения. В Perl регулярное выражение, например, вы можете написать:
/09[6-9][1-9][0-9]{6}/
Это точно соответствует строка 09, то ровно одна цифра от 6 до 9, то ровно одна цифра от 1 до 9, и, наконец, точно 6 цифр от 0 до 9.
В POSIX регулярное выражение {6}
нотации не существует. Вам нужно будет повторить диапазон 6 раз.
Обратите внимание, что образец вашего образца составляет всего 10 цифр, в то время как в вашем описании указано 12 цифр. Если вы хотите, максимум 12 цифр, а также произвольное число Z в конце концов, вы можете использовать
/09[6-9][1-9][0-9]+/
в Perl или
/09[6-9][1-9][0-9][0-9]*/
в POSIX - +
обозначения не существует там.
Диапазоны существуют в POSIX regexp (оба BRE и ERE, хотя для них более часто встречающиеся BRE нужны обратные косые черты); '+' существует в ERE, но может быть эмулирован с помощью '\ {1, \}' в BRE. Остальное, конечно, правильно. – mirabilos
09[6-9][1-9][0-9]{8}
/^09[6-9][1-9][3-9]{6}.{2}$/
Это должно делать то, что вы хотите, если последние две цифры могут быть любыми, поскольку вы не указали их.
разбив его:
^
соответствует началу строки
09
спичек "09"
точно
[6-9]
и аналогичные определить диапазоны для символа
[3-9]{6}
сказал, что мы хотим 6 вхождений между 3 и 9
.{2}
означает 2 ничего.
На самом деле, POSIX имеет диапазоны, см. re_format(7).
Общими являются POSIX BASIC регулярных выражений:
09[6-9][1-9][0-9]\{6\}
Отрегулировать от 6 до 8, если двенадцать цифр являются правильными.Вы можете написать это более гибкий диапазон номеров:
09[6-9][1-9][0-9]\{6,8\}
Иногда у вас есть POSIX ERE, хотя:
09[6-9][1-9][0-9]{6}
POSIX ERE поддержка + как PCRE, BRE не но вы можете использовать \{6,\}
для открытого конца. Регулярное выражение POSIX не работает, как PCRE (см. Ответ Dominik для них), нужны разделители как часть регулярного выражения.
См perlre(1) и perlretut(1) для Perl регулярных выражений, к которым PCRE является в основном совместимы.
PHP использует PCRE в эти дни, на случай, если вам интересно.
Пожалуйста, напишите что-нибудь, что вы пробовали, прежде чем обращаться за помощью. – joews
http://gskinner.com/RegExr/ <- этот инструмент поможет вам лучше понять регулярное выражение в журнале. – Camron
Вы говорите, что 12 в длину, но ваш образец имеет только 10. ??? –