RegExp 개체에 정규식 수정 자 옵션 전달
다음과 비슷한 것을 만들려고합니다.
var regexp_loc = /e/i;
정규 표현식이 문자열에 종속되기를 원하므로 새 RegExp를 사용하려고 시도했지만 원하는 것을 얻을 수 없었습니다.
기본적으로 e
위의 정규 표현식에서 문자열 변수가 되길 원 하지만 구문으로 실패합니다.
나는 다음과 같이 시도했다.
var keyword = "something";
var test_regexp = new RegExp("/" + keyword + "/i");
기본적으로 더 큰 문자열에서 하위 문자열을 검색 한 다음 해당 문자열을 대소 문자를 구분하지 않는 다른 문자열로 바꾸고 싶습니다.
안부, 알렉산더
두 번째 매개 변수 를 전달해야합니다 .
var r = new RegExp(keyword, "i");
또한 정규식 주입 공격을 방지하기 위해 문자열의 특수 문자를 이스케이프해야합니다.
또한 문자열 내의 이스케이프 문자를주의해야합니다.
예를 들어 단일 숫자 \ d {1}를 감지하고 싶었는데 이렇게했다면 ...
var pattern = "\d{1}";
var re = new RegExp(pattern);
re.exec("1"); // fail! :(
이니셜 \가 이스케이프 문자이기 때문에 실패합니다. "이스케이프를 이스케이프"해야합니다.
var pattern = "\\d{1}" // <-- spot the extra '\'
var re = new RegExp(pattern);
re.exec("1"); // success! :D
RegExp 생성자를 사용할 때는 regexp 리터럴을 사용할 때처럼 슬래시가 필요하지 않습니다. 그래서:
new RegExp(keyword, "i");
두 번째 매개 변수의 플래그를 전달합니다. 자세한 정보는 여기 를 참조 하십시오 .
여기에 예를 공유하고 싶습니다.
: 나는 같은 문자열을 대체 할 hi[var1][var2]
에 hi[newVar][var2]
. 및 var1
페이지 동적으로 생성된다.
그래서 나는 사용해야했습니다.
var regex = new RegExp("\\\\["+var1+"\\\\]",'ig');
mystring.replace(regex,'[newVar]');
이것은 나에게 꽤 잘 작동합니다. 누군가 나처럼 이것을 필요로한다면. 내가 []를 사용해야하는 이유는 var1 자체가 매우 쉬운 패턴 일 수 있으므로 []를 추가하면 훨씬 정확할 것입니다.
var keyword = "뭔가";
var test_regexp = new RegExp(something,"i");
RegExp 를 변환해야 합니다. 실제로 간단한 함수를 만들어서 수행 할 수 있습니다.
function toReg(str) {
if(!str || typeof str !== "string") {
return;
}
return new RegExp(str, "i");
}
다음과 같이 부릅니다.
toReg("something")
참조 URL : https://stackoverflow.com/questions/5172183/passing-regex-modifier-options-to-regexp-object
'IT박스' 카테고리의 다른 글
HTML 선택 컨트롤에 수평선을 어떻게 추가합니까? (0) | 2020.12.29 |
---|---|
모든 ivar는 재산이어야합니까? (0) | 2020.12.29 |
파일 크기 찾기 (0) | 2020.12.29 |
비밀번호없이 localhost에 ssh하는 방법은 무엇입니까? (0) | 2020.12.28 |
Total Commander에서 검색 할 때 .svn 폴더를 무시하는 방법 (0) | 2020.12.28 |