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