Проблема с перекрывающимися классами.[ab]+[abc]+
может соответствовать «ababababc» несколькими различными способами.Чтобы уменьшить откат, вместо этого измените его на [ab]+(c[ab]*)*
.(Я знаю, что переделанное выражение не совпадает точно с теми же строками, что и исходное выражение. Слишком лениво, чтобы опубликовать подходящий пример. Google "regex backtracking", нет, покупайте и читайте Friedl, сейчас).
Для записи, формы, которые хотят «проверить» мой адрес электронной почты в JavaScript, в большинстве случаев терпят неудачу.Я не могу сосчитать, сколько раз мне пришлось создавать временный адрес электронной почты только для того, чтобы совершить покупку или подписку.Единственный надежный способ подтвердить адрес электронной почты - попытаться отправить письмо.Пожалуйста, не создавайте еще одну неработающую форму "validator".
Некоторые примеры адресов, которые являются технически действительными:
*@example.com
me@had.to.create.a.temp.address.again.i.run.my.own.dns.example.net
you.forgot@domain.example.museum