Я знайшов багато перевірки електронної пошти Regex в SO, але я не знайшов жодного, який би прийняв порожню рядок. Це можливо лише через Regex? Ви приймаєте або порожній рядок, або лише електронну пошту? Я хочу це мати лише на Regex.
Я знайшов багато перевірки електронної пошти Regex в SO, але я не знайшов жодного, який би прийняв порожню рядок. Це можливо лише через Regex? Ви приймаєте або порожній рядок, або лише електронну пошту? Я хочу це мати лише на Regex.
Відповіді:
Цей шаблон регулярного вираження буде відповідати порожній рядку:
^$
І це відповідатиме (грубо) електронному листу чи порожній рядку:
(^$|^.*@.*\..*$)
^
, де ефективно ви шукаєте електронну пошту або нічого в середині рядка. Для цього (email_regex)?
краще підходить.
^$
це не працює, але ^(?!.)
робить: [ ^
початок рядка, (?!)
негативний пошук, .
будь-який символ - не включаючи
відповідність порожнього рядка або електронної пошти
(^$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)
відповідність порожнього рядка або електронної пошти, але також відповідність будь-якої кількості пробілів
(^\s*$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)
див. докладніше про сам регулярний вирівнювання електронної пошти:
Не співставляйте електронний лист із регулярним виразом. Це надзвичайно потворно, довго і складно, і ваш аналізатор регулярних виразів, мабуть, не може впоратися з цим у будь-якому випадку. Спробуйте знайти звичайну бібліотеку для їх узгодження. Якщо ви хочете вирішити лише практичне проблему відповідності адреси електронної пошти (тобто, якщо ви хочете неправильного коду, який трапляється (як правило)), скористайтеся посиланням regular-expressions.info, який подав хтось інший.
Що стосується порожнього рядка, ^$
він згадується кількома людьми і буде добре працювати.
це вирішить, він прийме порожній рядок або точний ідентифікатор електронної пошти
"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
Я вважаю /^\s+$|^$/gi
за краще збігати порожні та порожні місця.
console.log(" ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));
Якщо ви використовуєте його в межах рейок - активну перевірку запису можна встановити
allow_blank: true
Як:
validates :email, allow_blank: true, format: { with: EMAIL_REGEX }