Я отлаживал несколько часов и ударил стену - регулярное выражение никогда не было моим сильным. Я смог изменить следующее регулярное выражение, чтобы ограничить 255 символов для домена fine, однако, пытаясь ограничить часть локального/пользовательского имени адреса электронной почты, на котором я сталкиваюсь с проблемами, реализующими ограничение на 64 символа. Я перешел через regex101, заменяя + s и * s и пытаясь понять, что делает каждый проход, однако, даже когда я добавляю чек против всех символов без пробелов с лимитом в 64, кажется, что другие проверки проходят и принимают приоритет - хотя я не уверен. Ниже мое регулярное выражение в настоящее время без какого-либо 64 символа проверяет, что я нарушил его:Проверка подлинности электронной почты RegEx имя пользователя/имя локального имени проверка не выполняется
var emailCheck = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.{0,1}([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]){1,255}([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]){1,255}([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.*$/i);
То, что я до сих пор можно увидеть на http://jsfiddle.net/mtqx0tz1/, я сделал другой незначительным (например, не разрешать последовательные точки), но по большей части это регулярное выражение происходит из другого столбца без ограничений символов.
Наконец, я знаю, что это не «стандарт», так сказать, и электронные письма проверяются на стороне сервера, однако я бы хотел быть более безопасным, чем жаль ... а также работать над некоторыми из мое регулярное выражение. Извините, если этот вопрос не заслуживает фактического поста - я просто не вижу, где в моих проходах {1,64} терпит неудачу. На данный момент я подумываю о том, чтобы просто подстроить часть строки до знака @ и проверять длину таким образом ... но было бы неплохо включить ее в этот оператор, поскольку все проверки выполняются здесь для начала с.
Что, черт возьми, это вещь? Кроме того, почему вы используете '/.../' для создания объекта regex, а затем передаете его в 'new RegExp()', создавая другой объект regex? – melpomene
Почему вы пытаетесь втиснуть все виды проверок в одно регулярное выражение? – melpomene
Сортировка только того, что я нашел haha - нет реальной причины, почему это Франкенштейн сегодня: p Редактировать: Хороший призыв к новому RegExp() - вы можете увидеть, как мой новичок показывает, когда дело доходит до regex haha. Во всяком случае, причина для всех проверок персонажей и странных побегов заключается в том, что эта «страница» запускается через механизм шаблонов, который, к сожалению, не любит видеть такие вещи, как $ где-нибудь. – eric