JavaScript RegExp 객체

RegExp란 무엇인가요?

정규 표현식은 문자의 패턴 개체를 설명합니다.

일부 텍스트를 검색할 때 패턴을 사용하여 검색하려는 내용을 설명할 수 있습니다. RegExp는 이 패턴입니다.

단순한 패턴은 단일 문자일 수 있습니다.

더 복잡한 패턴에는 더 많은 문자가 포함되며 구문 분석, 형식 확인, 교체 등에 사용될 수 있습니다.

문자열 내 검색 위치, 검색할 문자 유형 등을 지정할 수 있습니다.

JavaScript는 정규식과 관련된 작업 및 기능을 완료하기 위해 RegExp 개체를 제공합니다. 각 정규식 패턴은 RegExp 인스턴스에 해당합니다.


RegExp 개체의 인스턴스를 만드는 방법에는 두 가지가 있습니다.
RegExp의 명시적 생성자를 사용합니다. 구문은 new RegExp("pattern"[,"flags"])입니다.
RegExp의 암시적 생성자를 일반 텍스트 형식으로 사용하세요: /pattern/[flags].

pattern 부분은 사용할 정규식 패턴 텍스트이며 필수입니다. 첫 번째 방법에서는 패턴 부분이 JavaScript 문자열 형식으로 존재하며 큰따옴표 또는 작은따옴표로 묶어야 합니다. 두 번째 방법에서는 패턴 부분이 두 개의 "/" 사이에 중첩되어 따옴표를 사용할 수 없습니다. .

flags 부분은 선택사항인 정규식의 플래그 정보를 설정합니다. 플래그 부분이 설정된 경우 첫 번째 방법에서는 문자열 형식으로 존재하고, 두 번째 방법에서는 마지막 "/" 문자 바로 뒤에 텍스트 형식으로 존재합니다. 플래그는 다음 플래그 문자의 조합일 수 있습니다.
g는 글로벌 플래그입니다. 이 플래그가 설정되면 텍스트에 대한 검색 및 바꾸기 작업이 텍스트의 일치하는 모든 부분에 영향을 미칩니다. 이 플래그가 설정되지 않으면 가장 먼저 일치하는 항목만 검색되어 교체됩니다.

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>php中文网(php.cn)</title> 
<script type="text/javascript">
var myString="这是第一个正则表达式的例子"; 
var myregex = new RegExp("一个"); // 创建正则表达式 
if (myregex.test(myString)){ 
document.write("找到了指定的模式!"); 
} 
else{ 
document.write("未找到指定的模式。"); 
} 
</script>
</head>
<body>
</body>
</html>

RegExp 수정자

g 는 글로벌 기호입니다. 이 플래그가 설정되면 텍스트에 대한 검색 및 바꾸기 작업이 텍스트의 일치하는 모든 부분에 영향을 미칩니다. 이 플래그가 설정되지 않으면 가장 먼저 일치하는 항목만 검색되어 교체됩니다.
i 는 대소문자 무시 플래그입니다. 이 플래그가 설정되면 일치 비교를 수행할 때 대소문자가 무시됩니다.
m은 여러 줄로 구성된 플래그입니다. 이 플래그가 설정되지 않은 경우 메타 문자 "^"는 검색된 전체 문자열의 시작 부분에만 일치하고, 메타 문자 "$"는 검색된 문자열의 끝 부분에만 일치합니다. 이 플래그가 설정되면 "^"는 검색된 문자열에서 "n" 또는 "r" 다음 위치(즉, 다음 줄의 시작)와도 일치할 수 있고, "$"도 검색된 문자열과 일치할 수 있습니다. 위치와 일치합니다. "n" 또는 "r" 뒤(즉, 다음 줄의 끝) RegExp 개체의 속성은 정적 속성과 인스턴스 속성으로 구분됩니다.

1 정적 속성
(1) 인덱스 속성. 현재 표현 패턴의 첫 번째 일치 내용의 시작 위치이며 0부터 계산됩니다. 초기값은 -1이며, 일치가 성공할 때마다 인덱스 속성이 그에 따라 변경됩니다.
(2) 입력 속성. $_로 축약될 수 있는 현재 작업 중인 문자열을 반환하며 초기 값은 빈 문자열 ""입니다.
(3)lastIndex 속성. 현재 표현식 패턴이 처음으로 일치하는 내용의 마지막 문자의 다음 위치입니다. 0부터 계산이 시작됩니다. 검색을 계속할 때 시작 위치로 자주 사용됩니다. 초기 값은 -1이며, 이는 검색을 의미합니다. 시작 위치부터 시작합니다. 일치할 때마다 lastIndex 속성 값이 그에 따라 변경됩니다.
(4)lastMatch 속성. $&로 축약할 수 있는 현재 표현식 패턴의 마지막 일치 문자열입니다. 초기값은 빈 문자열 ""입니다. lastMatch 속성의 값은 일치가 성공할 때마다 변경됩니다.
(5)lastParen 속성. 표현식 패턴에 포함된 부분 일치가 있는 경우 이는 현재 표현식 패턴의 마지막 부분 일치와 일치하는 부분 문자열이며 $+로 축약할 수 있습니다. 초기값은 빈 문자열 ""입니다. lastParen 속성의 값은 일치가 성공할 때마다 변경됩니다.
(6) leftContext 속성. 이는 현재 표현식 패턴에서 마지막으로 일치하는 문자열 왼쪽에 있는 모든 것입니다. $`로 축약할 수 있습니다. 여기서 "'"는 키보드의 "Esc" 아래에 있는 작은따옴표입니다. 초기값은 빈 문자열 ""입니다. 일치가 성공할 때마다 해당 속성 값이 변경됩니다.
(7) rightContext 속성. 현재 표현식 패턴에서 마지막으로 일치하는 문자열의 오른쪽에 있는 모든 항목이며 $'로 축약할 수 있습니다. 초기값은 빈 문자열 ""입니다. 일치가 성공할 때마다 해당 속성 값이 변경됩니다.
(8)$1…$9개 속성. 이러한 속성은 읽기 전용입니다. 표현식 패턴에 포함된 부분 일치가 있는 경우 $1...$9 속성 값은 각각 첫 번째부터 아홉 번째 부분 일치에 의해 캡처된 내용입니다. 하위 일치 항목이 9개보다 많은 경우 $1...$9 속성은 각각 마지막 9개 하위 일치 항목에 해당합니다. 표현식 패턴에서는 괄호로 묶인 부분 일치 항목을 원하는 만큼 지정할 수 있지만 RegExp 개체는 마지막 9개 부분 일치 항목의 결과만 저장할 수 있습니다. RegExp 인스턴스 개체의 일부 메서드에서 반환된 결과 배열에서 괄호 안의 모든 부분 일치 결과를 얻을 수 있습니다.

2 인스턴스 속성
(1) 전역 속성. RegExp 개체 인스턴스를 생성할 때 지정된 전역 플래그(g)의 상태를 반환합니다. RegExp 객체 인스턴스를 생성할 때 g 플래그가 설정되면 이 속성은 True를 반환하고, 그렇지 않으면 기본값은 False를 반환합니다.
(2)ignoreCase 속성. RegExp 객체 인스턴스를 생성할 때 지정된ignoreCase 플래그(i)의 상태를 반환합니다. RegExp 객체 인스턴스를 생성할 때 i 플래그가 설정되면 이 속성은 True를 반환하고, 그렇지 않으면 기본값은 False를 반환합니다.
(3) multiLine 속성. RegExp 객체 인스턴스를 생성할 때 지정된 multiLine 플래그(m)의 상태를 반환합니다. RegExp 개체 인스턴스를 생성할 때 m 플래그가 설정되면 이 속성은 True를 반환하고, 그렇지 않으면 기본값은 False를 반환합니다.
(4) 소스 속성. RegExp 개체 인스턴스를 생성할 때 지정된 식 텍스트 문자열을 반환합니다.


RegExp 객체 메소드

1 테스트 메소드
구문 형식은 test(str)입니다. RegExp 객체 인스턴스를 생성할 때 지정한 표현식 패턴이 문자열에 존재하는지 확인하여 존재하면 True를 반환하고, 존재하지 않으면 False를 반환하는 메서드입니다. 일치하는 항목이 발견되면 RegExp 개체의 관련 정적 속성이 업데이트되어 일치 항목을 반영합니다.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<script>
var str="Is this all there is?";
var patt1=/is/gi;
document.write(str.match(patt1));
</script>
</body>
</html>

2 exec 방법
구문 형식은 exec(str)입니다. 이 메서드는 RegExp 개체 인스턴스를 생성할 때 지정된 표현식 패턴을 사용하여 문자열을 검색하고 검색 결과가 포함된 배열을 반환합니다.
정규식에 전역 플래그(g)가 설정된 경우 RegExp 개체의 lastIndex 속성 값에 지정된 위치부터 시작하여 exec 및 테스트 메서드를 여러 번 호출하여 문자열에서 연속적으로 검색할 수 있습니다.
전역 플래그(g)가 설정되지 않은 경우 exec 및 테스트 메서드는 RegExp 개체의 lastIndex 속성 값을 무시하고 문자열의 처음부터 검색을 시작합니다.
exec 메서드가 일치 항목을 찾지 못한 경우 반환 값은 null입니다. 일치 항목이 발견되면 배열이 반환되고 RegExp 개체의 관련 정적 속성이 일치 항목을 반영하도록 업데이트됩니다. 반환된 배열의 요소 0에는 완전한 일치 결과가 포함되고, 요소 1~n은 표현식 패턴에 정의된 각 부분 일치의 결과입니다.
exec 메소드에서 반환된 배열에는 input, index 및 lastIndex라는 세 가지 속성이 있습니다.
입력 속성은 검색된 문자열 전체입니다.
index 속성은 검색된 문자열 전체에서 일치하는 위치를 나타냅니다.
lastIndex 속성은 일치하는 하위 문자열의 마지막 문자 옆에 있는 문자 위치를 나타냅니다.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<script>
var str = 'php';
var patt1 = new RegExp('\w', 'g'); // 有转义作为正则表达式处理
var patt2 = new RegExp('\w', 'g');  // 无转义作为字符串处理
var patt3 =/\w+/g;  // 与 patt1 效果相同
document.write(patt1.test(str)) //输出 true
document.write("<br>") 
document.write(patt2.test(str)) //输出 false
document.write("<br>") 
document.write(patt3.test(str)) //输出 true
</script>
</body>
</html>


지속적인 학습
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script type="text/javascript"> var strSrc = "xxa1b01c001yya2b02c002zz"; var re = /a(\d)b(\d{2})c(\d{3})/gi; var arr, count = 0; while ((arr = re.exec(strSrc))!= null) { displayResult(); } function displayResult() { document.write("<p>这是用正则表达式/" + re.source + "/gi对字符串<br>" + RegExp.input + "进行第" + (++count) + "次搜索的结果:<br>"); document.write("RegExp.index为" + RegExp.index + "<br>"); document.write("RegExp.lastIndex为" + RegExp.lastIndex + "<br>"); document.write("RegExp.lastMatch为" + RegExp.lastMatch + "<br>"); document.write("RegExp.lastParen为" + RegExp.lastParen + "<br>"); document.write("RegExp.leftContext为" + RegExp.leftContext + "<br>"); document.write("RegExp.rightContext为" + RegExp.rightContext + "<br>"); document.write("RegExp.$1为" + RegExp.$1 + "<br>"); document.write("RegExp.$2为" + RegExp.$2 + "<br>"); document.write("RegExp.$3为" + RegExp.$3 + "<br>"); document.write("RegExp.$4为" + RegExp.$4 + "<br>"); document.write("arr.index为" + arr.index + "<br>"); document.write("arr.input为" + arr.input + "<br>"); document.write("arr.lastIndex为" + arr.lastIndex + "<br>"); document.write("返回数组的元素个数为" + arr.length + "<br>"); document.write("返回数组的内容为[]"); for(var i=0; i<arr.length; i++) { if(i < arr.length-1) document.write("" + arr[i] + ""); else document.write(("" + arr[i] + "")+"<p>"); } } </script> </head> <body> </body> </html>
  • 코스 추천
  • 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~