Encontrei muita validação de e-mail Regex no SO, mas não encontrei nenhuma que aceite uma sequência vazia. Isso é possível apenas através do Regex? Aceitando apenas sequência vazia ou email? Eu quero ter isso apenas no Regex.
127
Este padrão regex corresponderá a uma cadeia vazia:
^$
E isso corresponderá (grosseiramente) a um email ou a uma string vazia:
(^$|^.*@.*\..*$)
^
, em que efetivamente você está procurando um email ou nada no meio de uma string. Pois isso(email_regex)?
é mais adequado.^$
ele não funciona, mas^(?!.)
funciona: [^
início da sequência de caracteres,(?!)
aparência negativa,.
qualquer caractere - não incluindo ocorrespondência vazia ou email
correspondência de string ou email vazio, mas também de qualquer quantidade de espaço em branco
veja mais sobre o próprio regex de correspondência de email:
http://www.regular-expressions.info/email.html
fonte
As respostas acima funcionam ($ para vazio), mas tentei isso e também funciona para deixar vazio da seguinte maneira:
A mesma coisa na ordem inversa
fonte
Não combine um email com uma expressão regular. É extremamente feio, longo e complicado, e seu analisador de expressões regulares provavelmente não consegue lidar com isso de qualquer maneira. Tente encontrar uma rotina de biblioteca para combiná-los. Se você deseja resolver apenas o problema prático de corresponder um endereço de email (ou seja, se você deseja que o código errado funcione (normalmente)), use o link regular-expressions.info que alguém enviou.
Quanto à string vazia,
^$
é mencionada por várias pessoas e funcionará bem.fonte
isso resolverá, aceitará uma string vazia ou exigirá um ID de email
fonte
Eu prefiro
/^\s+$|^$/gi
combinar espaços vazios e vazios.fonte
Se você o estiver usando dentro de trilhos - validação de registro de ativo, você pode definir
allow_blank: true
Como:
fonte