Возможно, хотя и не красиво.
\b(?:[1][1][0-9]|1\d{3}|223[0-4]|2[0-1]\d\d|2[0-2][0-3][0-4])\b
Я написал по электронной почте Филиппу Хейзелу, автору PCRE, в 2006 году, что он думает о математике в регулярном выражении:
Возможно, это выходит за рамки проекта, на ваш взгляд: способность воспринимать числа как числа, а не как текст, безусловно, будет полезной функцией.
Позволяет вам выполнять некоторые базовые математические проверки для сопоставленных цифр, например: является ли вторая совпадающая цифра большей или меньшей, является третьей цифрой, кратной 1-му, и во многих более сложных случаях, которые я не буду развивать, просто для того, чтобы объяснить свою точку зрения ,
Считаете ли вы, что это выходит за рамки сопоставления текста?
на что я получил следующий ответ:
Да, я думаю, что да, а также, это не
то, что доступно в Perl
регулярные выражения. Я знаю, что PCRE
есть некоторые расширения от Perl,
но ничего более серьезного, чем это (вы
может, возможно, взломать что-то с помощью
выноски, но это было бы немного рекламы
hoc, и, без сомнения, чрезвычайно грязный!).
Philip
и я не могу больше согласиться с этим в `09. Просто сопоставьте все числа и выполните проверку номера на любом языке, с которым вы сопоставляете.