Регулярное выражение, вероятно, не сработало бы в первую очередь - возможно, оно недопустимо и, конечно, не выполняет то, что вы ожидаете.
Включив все свое регулярное выражение в класс символов [ ]{1,100}
,все в , что этот класс символов не интерпретируется как регулярное выражение, а вместо этого как содержимое класса символов.
То есть, ваше регулярное выражение соответствует от 0 до 100 из \w
, +
, *
, (
, ... и т. Д.
Ошибка происходит от дефисов внутри: если я делаю регулярное выражение [a-z]
, это означает «сопоставить все символы от a до z (включительно)".
Ваше регулярное выражение имеет [-+
и [-.
, все в пределах []{0,100}
.Итак, вы пытаетесь сказать «сопоставить все символы от [
до +
».Это определяется символом Unicode.Левая квадратная скобка [
имеет код Unicode 91, тогда как +
- код Unicode 43.
Сообщение об ошибке, которое вы получаете, состоит в том, что вы пытаетесь выбрать все символы между точками Unicode 91 и 43, чтоback to front.
В любом случае, чтобы исправить свое регулярное выражение, выведите его из []
.
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
Чтобы ввести ограничение в 100 символов в регулярном выражении, вам придется использоватьВзгляд в будущее:
^(?=.{0,100}$)\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
^(?=.{0,100}$)
гарантирует, что в строке не более 100 символов.Если это так, остальная часть регулярного выражения затем приступает к его проверке.