>웹 프론트엔드 >JS 튜토리얼 >JavaScript에서 변수를 사용하여 정규식을 동적으로 생성하려면 어떻게 해야 합니까?

JavaScript에서 변수를 사용하여 정규식을 동적으로 생성하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-11-09 16:27:02686검색

How Can I Dynamically Create Regular Expressions with Variables in JavaScript?

JavaScript의 변수가 있는 동적 정규식

JavaScript의 정규식은 패턴 일치 및 조작을 위한 강력한 도구를 제공합니다. 그러나 이러한 패턴에 변수를 삽입하는 것은 어려울 수 있습니다.

다음 코드 조각을 고려하세요.

function(input) {
    var testVar = input;
    string = ...
    string.replace(/ReGeX + testVar + ReGeX/, "replacement")
}

이 코드는 문자열에서 특정 패턴의 모든 항목을 제공된 문자열로 바꾸려고 시도합니다. 교체 문자열. 그러나 정규식 내에서 변수를 직접 연결할 수 없기 때문에 실패합니다.

해결책: 템플릿 문자열 사용

ES6 JavaScript에서는 템플릿 문자열을 활용할 수 있습니다. 변수를 사용하여 정규식을 동적으로 생성합니다. 수행 방법은 다음과 같습니다.

const regex = new RegExp(`ReGeX${testVar}ReGeX`);
...
string.replace(regex, "replacement");

이 예에서 RegExp 생성자는 템플릿 문자열을 첫 번째 인수로 받아들입니다. 템플릿 문자열에는 보간된 변수 testVar가 있는 원래 정규식 패턴이 포함되어 있습니다. 백틱(``)은 템플릿 문자열을 나타냅니다.

ES6과 Pre-ES6

ES6 이전에는 동일한 결과를 얻기 위해 더 자세한 방법을 사용해야 했습니다. 결과:

var regex = new RegExp("ReGeX" + testVar + "ReGeX");
...
string.replace(regex, "replacement");

이전 구문은 여전히 ​​작동하지만 단순성과 가독성 때문에 템플릿 문자열 방법이 선호됩니다.

주의: 변수 이스케이프

삽입하는 변수에 잠재적인 악성 콘텐츠(예: 사용자 입력)가 있는 경우 주입 공격을 방지하기 위해 해당 변수를 이스케이프 처리해야 한다는 점에 유의하는 것이 중요합니다. 이스케이프에는 escape() 또는 encodeURIComponent() 함수를 사용할 수 있습니다.

위 내용은 JavaScript에서 변수를 사용하여 정규식을 동적으로 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.