JavaScript에서 이메일 주소를 확인하는 정규식이 있습니까?
질문자 :Community Wiki
정규식을 사용하는 것이 아마도 가장 좋은 방법일 것입니다. 여기 에서 많은 테스트를 볼 수 있습니다( chromium 에서 가져옴).
function validateEmail(email) { const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(String(email).toLowerCase()); }
다음은 유니코드를 허용하는 정규 표현식의 예입니다.
const re = /^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
그러나 JavaScript 유효성 검사에만 의존해서는 안 됩니다. JavaScript는 쉽게 비활성화할 수 있습니다. 이것은 서버 측에서도 검증되어야 합니다.
다음은 위의 작동 예입니다.
function validateEmail(email) { const re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(email); } function validate() { const $result = $("#result"); const email = $("#email").val(); $result.text(""); if (validateEmail(email)) { $result.text(email + " is valid :)"); $result.css("color", "green"); } else { $result.text(email + " is not valid :("); $result.css("color", "red"); } return false; } $("#email").on("input", validate);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <label for=email>Enter an email address:</label> <input id="email"> <h2 id="result"></h2>
Community Wiki
다음과 같은 형식으로 정말 간단한 유효성 검사를 원하는 사람들을 위해 Jaymon의 답변 을 약간 수정했습니다.
anystring@anystring.anystring
정규 표현식:
/\S+@\S+\.\S+/
여러 @ 기호가 일치하지 않도록 하려면:
/^[^\s@]+@[^\s@]+\.[^\s@]+$/
자바스크립트 함수의 예:
function validateEmail(email) { var re = /\S+@\S+\.\S+/; return re.test(email); } console.log(validateEmail('anystring@anystring.anystring'));
Community Wiki
완전성을 위해 여기에 또 다른 RFC 2822 호환 정규식이 있습니다.
공식 표준은 RFC 2822 로 알려져 있습니다. 유효한 이메일 주소가 준수해야 하는 구문을 설명합니다. 다음 정규 표현식으로 구현할 수 있습니다( 그러나 읽어서는 안 됨).
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
(...) 큰따옴표와 대괄호를 사용하는 구문을 생략하면 RFC 2822를 보다 실용적으로 구현할 수 있습니다. 오늘날 실제 사용되는 모든 이메일 주소의 99.99%와 여전히 일치합니다.
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
추가 변경 사항은 2자리 국가 코드 최상위 도메인과 특정 일반 최상위 도메인만 허용하는 것입니다.
asdf@adsf.adsf
와 같은 더미 이메일 주소를 필터링합니다 . 새로운 최상위 도메인이 추가되면 업데이트해야 합니다 .
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[AZ]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b
따라서 공식 표준을 따르더라도 여전히 절충점이 있습니다. 온라인 라이브러리나 토론 포럼에서 정규 표현식을 맹목적으로 복사하지 마십시오. 항상 자체 데이터와 자체 애플리케이션으로 테스트하십시오.
강조 광산
Community Wiki
와우, 여기에는 많은 복잡성이 있습니다. 가장 명백한 구문 오류를 잡는 것뿐이라면 다음과 같이 할 것입니다.
^\S+@\S+$
일반적으로 사용자가 저지르는 가장 명백한 오류를 포착하고 양식이 대부분 올바른지 확인합니다. 이것이 JavaScript 유효성 검사의 전부입니다.
편집: '.'도 확인할 수 있습니다. 사용하는 이메일에서
/^\S+@\S+\.\S+$/
Community Wiki
이메일의 유효성을 검사하기 위해 정규식을 사용하기로 결정한 다음 이해해야 할 것이 있습니다. 아마도 좋은 생각이 아닐 것입니다. 일단 당신이 그것에 대해 이해하고 나면, 거기에 절반까지 도달할 수 있는 많은 구현 이 있습니다. 이 기사는 그것들을 훌륭하게 요약합니다.
그러나 간단히 말해서, 사용자가 입력한 내용이 실제로 이메일인지 절대적으로 긍정적으로 확인하는 유일한 방법은 실제로 이메일을 보내고 어떤 일이 일어나는지 보는 것입니다. 그 외에는 모두 추측일 뿐입니다.
Community Wiki
HTML5 자체에는 이메일 유효성 검사가 있습니다. 브라우저가 HTML5를 지원하는 경우 다음 코드를 사용할 수 있습니다.
<form><input type="email" placeholder="me@example.com" required> <input type="submit"> </form>
jsFiddle 링크
유효한 전자 메일 주소
email = 1*( atext / "." ) "@" label *( "." label ) label = let-dig [ [ ldh-str ] let-dig ] ; limited to a length of 63 characters by RFC 1034 section 3.5 atext = < as defined in RFC 5322 section 3.2.3 > let-dig = < as defined in RFC 1034 section 3.5 > ldh-str = < as defined in RFC 1034 section 3.5 >
이 요구 사항은 RFC 5322를 고의적으로 위반 하는 것으로, 전자 메일 주소에 대한 구문이 너무 엄격하고("@" 문자 앞) 너무 모호하며("@" 문자 뒤) 너무 느슨합니다(주석 허용). , 공백 문자 및 대부분의 사용자에게 생소한 방식으로 인용된 문자열) 여기에서 실용적으로 사용할 수 있습니다.
다음 JavaScript 및 Perl 호환 정규식은 위의 정의를 구현한 것입니다.
/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
Community Wiki
나는 이것이 최선의 해결책임을 발견했습니다.
/^[^\s@]+@[^\s@]+\.[^\s@]+$/
다음 형식을 허용합니다.
1. prettyandsimple@example.com 2. very.common@example.com 3.disposable.style.email.with+symbol@example.com 4. other.email-with-dash@example.com 9. #!$%&'*+-/=?^_`{}|~@example.org 6. "()[]:,;@\\\"!#$%&'*+-/=?^_`{}| ~.a"@example.org 7. " "@example.org (따옴표 사이의 공백) 8. üñîçøðé@example.com(로컬 부분의 유니코드 문자) 9. üñîçøðé@üñîçøðé.com(도메인 부분의 유니코드 문자) 10. Pelé@example.com(라틴 문자) 11. δοκιμή@παράδειγμα.δοκιμή(그리스어) 12. 我買@屋企.香港 (중국어) 13. 甲斐@黒川.日本(일본어) 14. чебурашка@ящик-с-апельсинами.рф (키릴 자모)
그것은 분명히 다재다능하고 가장 중요한 국제 문자를 허용하는 동시에 기본 nothing@anything.anything 형식을 계속 적용합니다. RFC에서 기술적으로 허용하는 공간을 차단하지만 매우 드물기 때문에 이렇게 하게 되어 기쁩니다.
Community Wiki
최신 브라우저에서는 순수 JavaScript 및 DOM을 사용 하여 @Sushil의 답변 위에 빌드할 수 있습니다.
function validateEmail(value) { var input = document.createElement('input'); input.type = 'email'; input.required = true; input.value = value; return typeof input.checkValidity === 'function' ? input.checkValidity() : /\S+@\S+\.\S+/.test(value); }
바이올린 http://jsfiddle.net/boldewyn/2b6d5/ 에 예제를 작성했습니다. Squirtle's Answer 의 기능 감지 및 기본 검증과 결합되어 정규식 대량 학살에서 해방되고 이전 브라우저에서 중단되지 않습니다.
Community Wiki
이것은 올바른 RFC822 버전입니다.
function checkEmail(emailAddress) { var sQtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]'; var sDtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]'; var sAtom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+'; var sQuotedPair = '\\x5c[\\x00-\\x7f]'; var sDomainLiteral = '\\x5b(' + sDtext + '|' + sQuotedPair + ')*\\x5d'; var sQuotedString = '\\x22(' + sQtext + '|' + sQuotedPair + ')*\\x22'; var sDomain_ref = sAtom; var sSubDomain = '(' + sDomain_ref + '|' + sDomainLiteral + ')'; var sWord = '(' + sAtom + '|' + sQuotedString + ')'; var sDomain = sSubDomain + '(\\x2e' + sSubDomain + ')*'; var sLocalPart = sWord + '(\\x2e' + sWord + ')*'; var sAddrSpec = sLocalPart + '\\x40' + sDomain; // complete RFC822 email address spec var sValidEmail = '^' + sAddrSpec + '$'; // as whole string var reValidEmail = new RegExp(sValidEmail); return reValidEmail.test(emailAddress); }
Community Wiki
JavaScript는 정규 표현식과 일치할 수 있습니다.
emailAddress.match( / some_regex /);
다음 은 이메일에 대한 RFC22 정규 표현식입니다.
^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])* "\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x 7f])[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?< !\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f]) [^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>)$
Community Wiki
RFC를 준수하는 이메일 주소의 올바른 유효성 검사는 한 줄짜리 정규식으로 달성할 수 있는 것이 아닙니다. PHP에서 찾은 최고의 솔루션에 대한 기사는 What is a valid email address?입니다. . 분명히 Java로 이식되었습니다. 함수가 너무 복잡해서 자바스크립트에서 이식하고 사용하기에는 너무 복잡하다고 생각합니다. JavaScript/node.js 포트: https://www.npmjs.com/package/email-addresses .
좋은 방법은 클라이언트에서 데이터의 유효성을 검사하지만 서버에서 유효성을 다시 확인하는 것입니다. 이를 염두에 두고 문자열이 클라이언트에서 유효한 이메일 주소처럼 보이는지 확인하고 서버에서 엄격한 확인을 수행하면 됩니다.
다음은 문자열이 유효한 메일 주소인지 확인하는 데 사용하는 JavaScript 함수입니다.
function looksLikeMail(str) { var lastAtPos = str.lastIndexOf('@'); var lastDotPos = str.lastIndexOf('.'); return (lastAtPos < lastDotPos && lastAtPos > 0 && str.indexOf('@@') == -1 && lastDotPos > 2 && (str.length - lastDotPos) > 2); }
설명:
lastAtPos < lastDotPos
: Last@
는 last 이전이어야 합니다.
@
는 서버 이름의 일부가 될 수 없기 때문에 (내가 아는 한).lastAtPos > 0
@
앞에 무언가(이메일 사용자 이름)가 있어야 합니다.str.indexOf('@@') == -1
: 주소에@@
가 없어야 합니다.@
가 이메일 사용자 이름의 마지막 문자로 나타나더라도"
@
와 주소의 마지막@
사이에 오도록 인용해야 합니다.lastDotPos > 2
: 마지막 점 앞에 최소 3개의 문자가 있어야 합니다(예:a@b.com
.(str.length - lastDotPos) > 2
: 두 문자 도메인을 형성하려면 마지막 점 뒤에 충분한 문자가 있어야 합니다. 괄호가 필요한지 잘 모르겠습니다.
Community Wiki
모든 이메일 주소에는 'at'(예: @) 기호가 포함됩니다. 필요한 조건을 테스트하십시오.
email.indexOf("@") > 0
더 복잡한 것을 귀찮게하지 마십시오. 이메일이 RFC 구문적으로 유효한지 여부를 완벽하게 결정할 수 있다고 해도 이메일을 제공한 사람의 것인지 여부는 알 수 없습니다. 그게 정말 중요합니다.
이를 테스트하려면 유효성 검사 메시지를 보냅니다.
Community Wiki
이것은 http://codesnippet.joyent.com/posts/show/1917 에서 도난당했습니다.
email = $('email'); filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; if (filter.test(email.value)) { // Yay! valid return true; } else {return false;}
Community Wiki
이 작업을 수행:
^([a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)$
RFC 2822를 기반으로 합니다.
https://regex101.com/r/857lzc/1에서 테스트 하십시오.
종종 데이터베이스에 이메일 주소를 저장할 때 소문자로 만들고, 실제로 정규식은 일반적으로 대소문자를 구분하지 않는 것으로 표시할 수 있습니다. 이러한 경우에는 다음과 같이 약간 더 짧습니다.
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
다음은 JavaScript에서 사용되는 예입니다(마지막에 i
var emailCheck=/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i; console.log( emailCheck.test('some.body@domain.co.uk') );
참고 :
@
기호 앞 섹션에 따옴표를 포함할 수 있습니다 @
및 "..."
와 같은 내용을 따옴표로 묶는 한 포함할 수 있음). 아무도 이것을 하지 않는다! 더 이상 사용되지 않습니다. 그러나 실제 RFC 2822 표준에 포함되어 있으며 여기서는 생략합니다.
참고 2 : 이메일의 시작 부분(@ 기호 앞) 은 대소문자를 구분할 수 있습니다(사양을 통해). 그러나 대소문자를 구분하는 이메일을 사용하는 사람은 누구나 문제가 있는 데 익숙할 것이며 실제로는 대소문자를 구분하지 않는 것이 안전한 가정입니다. 추가 정보: 이메일 주소는 대소문자를 구분합니까?
Community Wiki
이 문제를 해결하기를 정말 고대하고 있습니다. 그래서 위의 이메일 유효성 검사 정규식을 수정했습니다.
원래의
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
수정됨
/^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()\.,;\s@\"]+\.{0,1})+[^<>()\.,;:\s@\"]{2,})$/
Wikipedia 이메일 주소 의 예제를 전달합니다.
여기 에서 결과를 볼 수 있습니다.
Community Wiki
입력한 이메일 주소가 유효한지 HTML을 사용하지 않는지 확인하기만 하면 됩니다.
<input type="email"/>
유효성 검사를 위한 함수를 작성할 필요가 없습니다.
Community Wiki
이메일인지 확인하기 위해 입력 문자열의 유효성을 검사하는 데 정규식을 사용해서는 안 됩니다. 너무 복잡하고 모든 경우를 다루지는 않을 것입니다.
이제 케이스의 90%만 처리할 수 있으므로 다음과 같이 작성하십시오.
function isPossiblyValidEmail(txt) { return txt.length > 5 && txt.indexOf('@')>0; }
다듬을 수 있습니다. 예를 들어 'aaa@'가 유효합니다. 그러나 전반적으로 요점을 알 수 있습니다. 그리고 성급하게 굴지 마세요... 90% 간단한 솔루션이 작동하지 않는 100% 솔루션보다 낫습니다.
세상은 더 간단한 코드를 필요로 합니다...
Community Wiki
이메일 유효성 검사기가 100% 정확하다는 것은 어렵습니다. 정확한 정보를 얻을 수 있는 유일한 방법은 테스트 이메일을 계정으로 보내는 것입니다. 즉, 합리적인 것을 얻고 있는지 확인하는 데 도움이 될 수 있는 몇 가지 기본 검사가 있습니다.
개선해야 할 사항:
new RegExp
대신 다음과 같이 regexp
작성해 보십시오.
if (reg.test(/@/))
@
기호 뒤에 마침표가 @
와 마침표 사이에 문자가 있는지 확인합니다.
Community Wiki
이것이 node-validator 가 하는 방법입니다:
/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/
Community Wiki
TLD의 존재를 확인하지 않는 솔루션은 불완전합니다.
이 질문에 대한 거의 모든 답변은 Regex를 사용하여 이메일 주소를 확인할 것을 제안합니다. Regex는 기본적인 유효성 검사에만 적합하다고 생각합니다. 이메일 주소 확인 확인은 실제로 두 가지 별개의 문제인 것 같습니다.
1- 이메일 형식 검증: 이메일이 RFC 5322의 이메일 형식 및 패턴을 준수하는지 그리고 TLD가 실제로 존재하는지 확인합니다. 모든 유효한 TLD 목록은 여기 에서 찾을 수 있습니다.
예를 들어 example@example.ccc
주소가 정규식을 통과 ccc
는 IANA의 최상위 도메인이 아니기 때문에 유효한 이메일이 아닙니다.
2- 이메일이 실제로 존재하는지 확인: 이를 위해 유일한 옵션 은 사용자에게 이메일을 보내는 것 입니다.
Community Wiki
유효성 검사기 함수 내에서 다음 코드를 사용하십시오.
var emailID = document.forms["formName"]["form element id"].value; atpos = emailID.indexOf("@"); dotpos = emailID.lastIndexOf("."); if (atpos < 1 || ( dotpos - atpos < 2 )) { alert("Please enter correct email ID") return false; }
그렇지 않으면 jQuery 를 사용할 수 있습니다. 내부 규칙은 다음을 정의합니다.
eMailId: { required: true, email: true }
Community Wiki
2018년 정규식 업데이트! 이 시도
let val = 'email@domain.com'; if(/^[a-z0-9][a-z0-9-_\.]+@([az]|[a-z0-9]?[a-z0-9-]+[a-z0-9])\.[a-z0-9]{2,10}(?:\.[az]{2,10})?$/.test(val)) { console.log('passed'); }
타이프스크립트 버전 완성
// export const emailValid = (val:string):boolean => /^[a-z0-9][a-z0-9-_\.]+@([az]|[a-z0-9]?[a-z0-9-]+[a-z0-9])\.[a-z0-9]{2,10}(?:\.[az]{2,10})?$/.test(val);
추가 정보 https://git.io/vhEfc
Community Wiki
squirtle 과 달리 다음은 복잡한 솔루션이지만 이메일을 제대로 검증하는 훌륭한 작업을 수행합니다.
function isEmail(email) { return /^((([az]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([az]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(email); }
다음과 같이 사용하십시오.
if (isEmail('youremail@yourdomain.com')){ console.log('This is email is valid'); }
Community Wiki
이메일 주소 확인을 위한 정규식
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])+
Community Wiki
다음은 이메일 주소의 유효성을 검사하기 위해 정규식을 사용하는 것에 대한 아주 좋은 논의입니다. " 정규식을 검증하는 이메일 주소 비교 "
다음은 참조용으로 JavaScript와 호환되는 현재 최상위 표현식입니다.
/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[az][az])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i
Community Wiki
분명히, 그것은 다음과 같습니다.
/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[az])\.)+[az]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i
'10년 10월 1일 http://fightingforalostcause.net/misc/2006/compare-email-regex.php에서 가져옴.
그러나 물론 그것은 국제화를 무시하는 것입니다.
Community Wiki
정규 표현식에 대한 나의 지식은 그리 좋지 않습니다. 그래서 먼저 간단한 정규식으로 일반 구문을 확인하고 나중에 다른 기능으로 더 구체적인 옵션을 확인합니다. 이것은 최고의 기술 솔루션이 아닐 수도 있지만 이 방법을 사용하면 훨씬 더 유연하고 빠르게 작업할 수 있습니다.
내가 만난 가장 일반적인 오류는 공백(특히 시작과 끝 부분)과 때때로 이중 점입니다.
function check_email(val){ if(!val.match(/\S+@\S+\.\S+/)){ // Jaymon's / Squirtle's solution // Do something return false; } if( val.indexOf(' ')!=-1 || val.indexOf('..')!=-1){ // Do something return false; } return true; } check_email('check@thiscom'); // Returns false check_email('check@this..com'); // Returns false check_email(' check@this.com'); // Returns false check_email('check@this.com'); // Returns true
Community Wiki
var testresults function checkemail() { var str = document.validation.emailcheck.value var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([az]{2,6}(?:\.[az]{2})?)$/i if (filter.test(str)) testresults = true else { alert("Please input a valid email address!") testresults = false } return (testresults) } function checkbae() { if (document.layers || document.getElementById || document.all) return checkemail() else return true }
<form name="validation" onSubmit="return checkbae()"> Please input a valid email address:<br /> <input type="text" size=18 name="emailcheck"> <input type="submit" value="Submit"> </form>
Community Wiki
Wikipedia 표준 메일 구문:
https://en.wikipedia.org/wiki/Email_address#Examples https://fr.wikipedia.org/wiki/Adresse_%C3%A9lectronique#Syntaxe_exacte
function validMail(mail) { return /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()\.,;\s@\"]+\.{0,1})+([^<>()\.,;:\s@\"]{2,}|[\d\.]+))$/.test(mail); } // VALID MAILS validMail('Abc@example.com') // Return true validMail('Abc@example.com.') // Return true validMail('Abc@10.42.0.1') // Return true validMail('user@localserver') // Return true validMail('Abc.123@example.com') // Return true validMail('user+mailbox/department=shipping@example.com') // Return true validMail('"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com') // Return true validMail('!#$%&\'*+-/=?^_`.{|}~@example.com') // Return true validMail('"()<>[]:,;@\\\"!#$%&\'-/=?^_`{}| ~.a"@example.org') // Return true validMail('"Abc@def"@example.com') // Return true validMail('"Fred Bloggs"@example.com') // Return true validMail('"Joe.\\Blow"@example.com') // Return true validMail('Loïc.Accentué@voilà.fr') // Return true validMail('" "@example.org') // Return true validMail('user@[IPv6:2001:DB8::1]') // Return true // INVALID MAILS validMail('Abc.example.com') // Return false validMail('A@b@c@example.com') // Return false validMail('a"b(c)d,e:f;g<h>i[j\k]l@example.com') // Return false validMail('just"not"right@example.com') // Return false validMail('this is"not\allowed@example.com') // Return false validMail('this\ still\"not\\allowed@example.com') // Return false validMail('john..doe@example.com') // Return false validMail('john.doe@example..com') // Return false
이 테스트 보기: https://regex101.com/r/LHJ9gU/1
Community Wiki
모든 이메일 주소 테스트 사례를 통과하는 JS의 Regex를 찾고 있었습니다.
email@example.com
유효한 이메일firstname.lastname@example.com
이메일 주소 필드에 점이 포함됨email@subdomain.example.com
이메일에 하위 도메인이 있는 점이 포함됨firstname+lastname@example.com
더하기 기호는 유효한 문자로 간주됩니다.email@192.0.2.123
도메인은 유효한 IP 주소입니다.email@[192.0.2.123]
IP 주소 주위의 대괄호가 유효한 것으로 간주됩니다.“email”@example.com
이메일 주변의 인용문은 유효한 것으로 간주됩니다.1234567890@example.com
주소의 숫자가 유효합니다.email@domain-one.example
도메인 이름의 대시가 유효합니다._______@example.com
주소 필드의 밑줄이 유효합니다.email@example.name
.name
은 유효한 최상위 도메인 이름입니다.email@example.co.jp
최상위 도메인 이름의 점도 유효한 것으로 간주됨(여기에서co.jp
firstname-lastname@example.com
주소 필드의 대시가 유효합니다.
여기 우리가 간다 :
또는 정규식:
Regex = /(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@[*[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+]*/
Community Wiki
출처 : 여기를 클릭하세요
출처 : http:www.stackoverflow.com/questions/46155/how-to-validate-an-email-address-in-javascript
'etc. > StackOverFlow' 카테고리의 다른 글
Google이 while(1)을 앞에 추가하는 이유는 무엇입니까? JSON 응답에? (0) | 2021.09.30 |
---|---|
확실한 C++ 책 가이드 및 목록 (0) | 2021.09.30 |
JavaScript에서 문자열의 모든 항목을 바꾸는 방법 (0) | 2021.09.30 |
JavaScript의 배열에 대한 For-each (0) | 2021.09.30 |
파일을 특정 버전으로 재설정하거나 되돌리려면 어떻게 해야 합니까? (0) | 2021.09.28 |