자바스크립트 정규식
Grammar
Definition
JavaScript에서 정규식을 정의하는 방법에는 두 가지가 있습니다. <%XXX%>
1과 유사한 문자열을 정의합니다. var reg=new RegExp( ' <%[^%>]+%>','g');
2. 리터럴
var reg=/<%[^%>]%>/ g;
g: 전역, 전체 텍스트 검색, 기본 검색은 첫 번째 결과부터 검색하고 중지합니다. i: 대소문자 무시, 기본 대소문자 구분
m: 여러 줄, 여러 줄 검색(^ 및 $의 의미를 변경하면 전체 문자열의 시작과 끝뿐만 아니라 모든 줄에서 각각 줄의 시작과 끝에서 일치하게 됩니다.)
메타 문자
정규식은 다음과 같습니다. 중요한 이유는 이스케이프 문자와 조합이 너무 많지만 정규식 메타 문자(선행 문자를 지정하는 데 사용할 수 있는 정규식에서 특별한 의미를 갖는 특수 문자)가 많지 않기 때문입니다. [ { ^ $ | ) ? * + .모든 메타 문자가 서로 다른 조합으로 다른 의미를 갖는 것은 아닙니다. 분류를 살펴보세요
사전 정의된 특수 문자
문자 의미
t 가로 탭 문자
r 캐리지 리턴 문자
n 줄 바꿈 문자
f 폼 피드 문자
cX X에 해당하는 제어 문자(Ctrl+X)
v 세로 탭 문자
원칙적으로 하나의 일반 문자는 하나의 문자에 해당하므로 [] 전체가 하나의 문자에 해당합니다. 예:
alert(/ruby/.test("ruby"));//true
alert(/[abc]/.test("a"));//true
alert(/[abc]/.test("b"));//true
alert(/[abc]/.test("c"));//true
alert( " 박쥐 , 고양이, 뚱뚱한 박쥐 , 뚱뚱한 고양이".match(/[bcf]at/gi));//bat,Cat,fAt,bat,faT,cat
부정적인 Xiang 클래스
도 대괄호 안에 소란을 피우고 이를 부정하기 위해 앞에 메타 문자를 추가하여 일치 항목이 대괄호 안의 문자가 될 수 없음을 나타냅니다.
alert(/[^abc]/.test("a"));//false
alert(/[^abc]/.test("b"));// false
alert(/[^abc]/.test("6"));//true
alert(/[^abc]/.test("gg"));//true
Scope class
여전히 대괄호 안에서 소란을 피우고 있습니다. 때로는 일치하는 항목이 너무 많고 유형이 동일하여 모두 입력하기가 너무 번거롭습니다. 중앙에 수평선이 추가되는 것이 특징이다.
통합 수업
은 여전히 대괄호 안에 소란을 피우고 있습니다. 대괄호를 사용하여 다양한 유형의 단일 문자를 일치시킬 수 있습니다.
alert(/[a-f]/.test("b"));//true
alert(/[a-f]/.test("k"));//false
alert(/[a-z]/.test("h"));//true
alert(/[A-Z]/.test("gg"));//false
alert( /[^H-Y]/.test("G"));//true
alert(/[0-9]/.test("8"));//true
alert(/ [^7-9]/.test("6"));//true
alert(/[a-m1-5n]/.test("a"))//true
alert(/[a-m1-5n]/.test("3"))//true
alert(/[a-m1-5n]/.test(a))//true
alert(/[a-m1-5n]/.test("r"))//false
사전 정의된 클래스
문자 설명 과 동일
. [^nr] 줄 바꿈 및 캐리지 리턴을 제외한 모든 문자
d [0-9] 숫자
D [^0-9] 숫자가 아닌 문자
s [tnx0Bfr] 공백 문자
S [^ tnx0Bfr] 공백이 아닌 문자
w [a-zA-Z_0-9] 단어 문자(모든 문자)
W [^a-zA-Z_0-9] 단어가 아닌 문자
alert(/d/.test("3 "))//true
alert(/d/.test("w"))//false
alert(/D/.test("w"))//true
Alert(/w/.test("w"))//true
alert(/w/.test("SI"))//false
alert(/W/.test(" " ))//true
alert(/s/.test(" "))//true
alert(/S/.test(" "))//false
alert( / S/.test("정"))//true
alert(/./.test("美"))//true
alert(/./.test(" ")) / /true
alert(/./.test(a))//true
정규 표현식을 지원하는 문자열 객체의 메서드
1. search() 메서드;
이 메서드는 문자열에서 지정된 하위 문자열을 검색하거나 정규식과 일치하는 문자열을 검색하는 데 사용됩니다.
기본 구문: stringObject.search(regexp);
@param regexp 매개 변수는 stringObject에서 검색해야 하는 문자열이거나 검색해야 하는 RegExp 개체일 수 있습니다.
@return(반환 값) 정규 표현식 객체와 일치하는 stringObject의 첫 번째 하위 문자열의 시작 위치입니다. 일치하는 하위 문자열이 없으면 -1이 반환됩니다.
참고: search() 메서드는 전역 일치를 수행하지 않으며 플래그 g를 무시하고 regexp 객체의 lastIndex 속성을 갖지 않으며 항상 시작됩니다. 문자열에서 시작 위치에서 검색할 때 항상 stringObject와 일치하는 첫 번째 위치가 반환됩니다.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <button onclick="myFunction()">点击</button> <p id="demo"></p> <script> function myFunction() { var str = "Visit W3cSchool!"; var n = str.search(/3c/i); document.getElementById("demo").innerHTML = n; } </script> </body> </html>
2. match() 메서드;
이 메서드는 문자열 내에서 지정된 값을 검색하거나 하나 이상의 정규 표현식과 일치하는 항목을 찾는 데 사용됩니다. 이 메서드는 indexOf() 또는 lastIndexOf()와 유사하지만 문자열 위치가 아닌 지정된 값을 반환합니다.
기본 구문:
stringObject.match(searchValue) 또는 stringObject.match(regexp)
@ param(매개변수)
searchValue는 문자열 값을 검색해야 합니다.
regexp: 패턴과 일치해야 하는 RegExp 객체;
@return(반환 값)은 성공적인 일치 항목의 배열을 저장합니다. 전역적으로 일치하는 경우 배열을 반환합니다. 일치하는 항목이 없으면 null을 반환합니다. 반환된 배열에는 세 개의 요소가 있고, 첫 번째 요소에는 일치하는 텍스트가 저장되며, index 속성은 일치하는 텍스트를 나타냅니다. stringObject의 시작 문자 위치입니다. input 속성은 stringObject 개체에 대한 참조를 선언합니다.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <button onclick="myFunction()">点击</button> <p id="demo"></p> <script> function myFunction() { var str = "hello world"; var n = str.match("world"); document.getElementById("demo").innerHTML = n; } </script> </body> </html>
3. replacement() 메서드:
이 메서드는 문자열의 일부 문자를 바꾸는 데 사용됩니다. 다른 문자 또는 일반 문자와 일치하는 하위 문자열을 바꾸는 데 사용됩니다. 표현식;
기본 구문: stringObject.replace(regexp/substr,replacement);
@param (매개변수)
regexp/substr; 대체 패턴이 필요한 문자열 또는 RegExp 개체.
대체: 문자열 값, 대체할 텍스트 또는 대체 텍스트를 생성하는 함수.
@return(반환 값) 교체 후 새 문자열을 반환합니다.
참고: 문자열의 stringObject의 교체() 메서드는 검색 및 교체 작업을 수행하며 문자열 또는 문자열일 수 있습니다. 일반 일치 패턴인 경우 전역 대체를 나타내는 수정자 g를 사용하여 추가할 수 있습니다. 그렇지 않으면 첫 번째 일치 문자열만 대체됩니다.
RegExp 개체 방법. 1.test() 메소드:
이 메소드는 문자열이 특정 패턴과 일치하는지 감지하는 데 사용됩니다. 기본 구문: RegExpObject.test(str);
@param(매개변수) str이 필요합니다. string;
@return(반환 값) 문자열 str에 RegExpObject와 일치하는 텍스트가 포함되어 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <button onclick="myFunction()">点我</button> <p id="demo">请访问网站</p> <script> function myFunction() { var str = document.getElementById("demo").innerHTML; var txt = str.replace("网站","php.cn"); document.getElementById("demo").innerHTML = txt; } </script> </body> </html>2. exec() 메서드:
이 메서드는 일반 일치 항목을 검색하는 데 사용됩니다. 문자열의 표현. 기본 구문: RegExpObject.exec(string)
@param(매개 변수): string [필수] 검색할 문자열입니다.
@return(반환 값): 일치하는 결과를 저장할 배열을 반환합니다. 일치하는 항목이 없으면 반환 값은 null입니다.
참고: 반환된 배열의 첫 번째 요소는 정규식 Text와 일치합니다. 2개의 속성을 반환합니다. index 속성은 일치하는 텍스트의 첫 번째 문자 위치를 선언합니다. 이 메서드가 전역이 아닌 경우 반환된 배열은 ()에서 반환된 배열과 같습니다. 방법은 동일합니다.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <script> var patt1=new RegExp("e"); document.write(patt1.test("The best things in life are free")); </script> </body> </html>