[regex] 정규식 빈 문자열 또는 이메일

SO에서 많은 Regex 이메일 유효성 검사를 찾았지만 빈 문자열을 허용하는 것을 찾지 못했습니다. 이것은 정규식을 통해서만 가능합니까? 빈 문자열 또는 이메일 만 수락 하시겠습니까? 나는 이것을 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)$)

정규식 자체와 일치하는 이메일에 대해 자세히 알아보십시오.

http://www.regular-expressions.info/email.html


답변

위의 답변은 작동하지만 ($는 비어 있음) 방금 시도한 결과 그대로 비어 있습니다.

/\A(INTENSE_EMAIL_REGEX|)\z/i

역순으로 같은 것

/\A(|INTENSE_EMAIL_REGEX)\z/i


답변

정규식 이메일과 일치하지 않습니다. 그것은 매우 추하고 길고 복잡 하며 정규식 파서는 어쨌든 처리 할 수 ​​없습니다. 일치하는 라이브러리 루틴을 찾으십시오. 이메일 주소를 일치시키는 실제 문제 만 해결하려면 (즉, 일반적으로 작동하는 잘못된 코드를 원할 경우) 다른 사람이 제출 한 regular-expressions.info 링크를 사용하십시오.

빈 줄 ^$은 여러 사람들이 언급하고 잘 작동합니다.


답변

이 문제가 해결되면 빈 문자열이나 정확한 전자 메일 ID를 수락합니다.

"^$|^([\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 }