У меня есть следующее Регулярное выражение, которое соответствует формату адреса электронной почты:
^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$
Это используется для проверки с формой с помощью JavaScript. Однако это - дополнительное поле. Поэтому, как я могу изменить этот regex для соответствия формату адреса электронной почты или пустой строке?
От моего ограниченного regex знания я думаю \b
соответствует пустой строке, и |
означает "Или", таким образом, я пытался сделать следующее, но это не работало:
^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$|\b
Чтобы сопоставить шаблон
или пустую строку, используйте
^$|pattern
^
и $
- начало и конец привязки строки соответственно. |
используется для обозначения альтернатив, например это | то
. \ b
\ b
в большинстве разновидностей используется привязка «границы слова». Это совпадение нулевой ширины, то есть пустая строка, но оно сопоставляет эти строки только в очень определенных местах , а именно на границах слова.
То есть \ b
находится:
\ w
и \ W
(в любом порядке):
^
и \ w
\ w
\ w
и $
\ w
Это нетривиально, в зависимости по спецификации.
Я не уверен, почему вы хотите подтверждать необязательный адрес электронной почты, но я бы посоветовал вам использовать
^$|^[^@\s]+@[^@\s]+$
, что означает
^$ empty string
| or
^ beginning of string
[^@\s]+ any character but @ or whitespace
@
[^@\s]+
$ end of string
Вы все равно не остановите поддельные электронные письма, и таким образом вы не сможете остановить действительные адреса.
\ b соответствует границе слова. Я думаю, вы можете использовать ^ $ для пустой строки.