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)$)
정규식 자체와 일치하는 이메일에 대해 자세히 알아보십시오.
답변
위의 답변은 작동하지만 ($는 비어 있음) 방금 시도한 결과 그대로 비어 있습니다.
/\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 }