왜이 값이 true 대신 false를 반환하는지.일반 매개 변수를 함수 매개 변수로 전달하는 방법
function doit(expression) {
var regex = new RegExp(expression, 'g');
alert(regex.test('[email protected]'));
}
doit("/^\w+([-+.\']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/");
왜이 값이 true 대신 false를 반환하는지.일반 매개 변수를 함수 매개 변수로 전달하는 방법
function doit(expression) {
var regex = new RegExp(expression, 'g');
alert(regex.test('[email protected]'));
}
doit("/^\w+([-+.\']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/");
하나 제대로 표현 형식 : 직접 표현
function doit(expression) {
var regex = new RegExp(expression, 'g');
alert(regex.test('[email protected]'));
}
doit("^\\w+([-+.\\']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
// no/here, escape \
또는 통과 :
function doit(expression) {
alert(expression.test('[email protected]'));
}
doit(/^\w+([-+.\']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/g);
슬래시 (/
)는 표현식의 일부가 아니며 정규 표현식 리터럴을 나타냅니다. 표현식을 포함하는 문자열을 사용하는 경우에는 백 슬래시가 이스케이프 문자이기 때문에 이스케이프 문자를 생략하고 모든 백 슬래시를 이스케이프 처리해야합니다.
백 슬래시는 문자열에서 이스케이프 문자이므로 '\ w'대신 '\\ w'와 같이 모든 백 슬래시를 이스케이프 처리해야합니다. 이 대답의 두 번째 옵션처럼 문자열 대신 실제 RegExp 객체를 제공 한 경우 코드를 훨씬 더 깨끗하게 처리 할 수 있습니다. – apsillers
@RegisteredUser : 문자열에 백 슬래시가 있으면 이스케이프 처리해야합니다. http://jsfiddle.net/Guffa/hAV8Q/4/ – Guffa
오른쪽으로 백 슬래시를 이스케이프 처리하는 것을 잊어 버렸습니다 ... 그 이유는 정규식을 사용하지 않는 이유입니다. 문자열;) –
new RegExp()
으로 정규식을 만들 때 구분 기호를 사용하지 않기 때문에. 문자열 앞뒤에서 /
을 제거하십시오.
또는 앞뒤에 따옴표를 제거하여 정규식을 전달하고 new RegExp()
호출을 생략하십시오.
'new RegExp'는 슬래시로 예약 된 문자열을 기대하지 않기 때문에 작동하지 않습니다. 첫 번째 문자와 마지막 문자는 리터럴 정규 표현식 패턴의 일부입니다. – apsillers