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.
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.
Respostas:
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 o
correspondência vazia ou email
(^$|^[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)$)
correspondência de string ou email vazio, mas também de qualquer quantidade de espaço em branco
(^\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)$)
veja mais sobre o próprio regex de correspondência de email:
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.
isso resolverá, aceitará uma string vazia ou exigirá um ID de email
"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
Eu prefiro /^\s+$|^$/gi
combinar espaços vazios e vazios.
console.log(" ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));
Se você o estiver usando dentro de trilhos - validação de registro de ativo, você pode definir
allow_blank: true
Como:
validates :email, allow_blank: true, format: { with: EMAIL_REGEX }