이메일 주소 형식과 일치하는 다음 정규식이 있습니다.
^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$
JavaScript를 사용하는 양식의 유효성 검사에 사용됩니다. 그러나 이것은 선택적 필드입니다. 따라서 이메일 주소 형식 또는 빈 문자열과 일치하도록이 정규식을 어떻게 변경할 수 있습니까?
제한된 정규식 지식으로 볼 \b
때 빈 문자열과 일치하고 |
“Or”를 의미 한다고 생각 하므로 다음을 시도했지만 작동하지 않았습니다.
^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$|\b
답변
일치 pattern
하거나 빈 문자열을 사용하려면
^$|pattern
설명
^
그리고$
각각 문자열 앵커의 시작과 끝입니다.|
대체를 나타내는 데 사용됩니다 (예 🙂this|that
.
참고 문헌
의 위에 \b
\b
대부분의 특징은 “단어 경계”앵커입니다. 너비가 0 인 일치, 즉 빈 문자열이지만 특정 위치 , 즉 단어의 경계 에서만 해당 문자열과 일치합니다 .
즉, 다음 \b
위치에 있습니다.
- 연속
\w
및\W
(두 순서 중 하나) :- 즉, 단어 문자와 단어가 아닌 문자 사이
- 사이
^
와\w
- 즉, 다음으로 시작하는 경우 문자열의 시작 부분에
\w
- 즉, 다음으로 시작하는 경우 문자열의 시작 부분에
- 사이
\w
와$
- 즉, 문자열의 끝에
\w
- 즉, 문자열의 끝에
참고 문헌
정규식을 사용하여 전자 메일 주소 일치
이것은 사양에 따라 사소한 것이 아닙니다.
관련 질문
답변
대안은 정규 표현식을 캡처하지 않는 괄호 안에 넣는 것입니다. 그런 다음 ?
한정자를 사용하여 해당 표현식을 선택적으로 만듭니다. 그러면 캡처되지 않은 그룹의 0 (즉, 빈 문자열) 또는 1 개의 인스턴스를 찾습니다.
예를 들면 :
/(?: some regexp )?/
귀하의 경우 정규 표현식은 다음과 같습니다.
/^(?:[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+)?$/
없음 |
“또는”연산자 필요!
다음 은 JavaScript 정규식 구문에 대한 Mozilla 문서입니다.
답변
선택적 이메일 주소를 확인하려는 이유를 잘 모르겠지만 다음을 사용하는 것이 좋습니다.
^$|^[^@\s]+@[^@\s]+$
의미
^$ empty string
| or
^ beginning of string
[^@\s]+ any character but @ or whitespace
@
[^@\s]+
$ end of string
어쨌든 가짜 이메일을 중지하지 않으며 이렇게하면 유효한 주소가 중지되지 않습니다.
답변
\ b는 단어 경계와 일치합니다. 빈 문자열에 ^ $를 사용할 수 있다고 생각합니다.