작동하지 않습니다 match``로 전달 (RFC 5322)는,이 성공적으로 이메일 주소와 일치 :이메일 주소 정규 표현식 구글 크롬에서
console.log('[email protected]'.match(/^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[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,}))$/));
를이하지 않습니다 :
const regex = '^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[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,}))$';
console.log('[email protected]'.match(regex));
유일한 차이점은 후자의 경우 정규식이 변수를 통해 전달되고 슬래시를 사용하지 않는다는 것입니다.
나는 후자의 작업을 얻는 방법을 알고 있습니다.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp Regex Expression 개체로 전달 하시겠습니까? –
모든 백 슬래시를 이스케이프 처리하여 문자열에서 리터럴로 유지해야합니다. 당신이'\\.'을 쓴 몇 군데에서 바로 얻었지만 당신은 대부분의 다른 곳에서 그것을 놓쳤습니다. 문자열에서 백 슬래시가 먼저 해석하기 때문에 – Barmar
그건 : 당신의 정규 표현식 문자열의 값은 다음과 같습니다 ^ (([^ <>() [] \; :.의 @ "]. + ([^ <> ([[0-9] {1,3}. [0-9] {1,3})()() [] \.,; : s @ "] [0-9] {1,3}. [0-9] {1,3}]) | ((a-zA-Z-0-9) +.) + [a-zA-Z] { 2,})) $ – Tom