자바스크립트 정규식 소개_자바스크립트 기술

WBOY
풀어 주다: 2016-05-16 17:47:56
원래의
1186명이 탐색했습니다.

string object
1, str.match(RegExp)
str에서 RegExp와 일치하는 문자열을 검색하여 배열에 저장하고 반환
RegExp가 전역 설정이 아닌 경우 (/g ), 한 번만 일치

코드 복사 코드는 다음과 같습니다.

( "abc112dwfwabcwef2abc3wfwabcasqf453abcqwf24j234h").match (/abcd*/g);
//Result
["abc112", "abc", "abc3", "abc", "abc"]

이 방법에서 정규식이 전역 일치 패턴(g 태그)이 아닌 경우 첫 번째 요소는 일치하는 문자열이고 나머지는 정규식에 캡처된 문자열이며 배열에는 2개의 속성이 있습니다. 🎜>감지용 문자열
index는 문자열 감지에 사용된 문자열의 시작 위치와 일치합니다.
(이 두 속성은 RegExp.exec() 메소드를 참조하세요.)

2.str.search(regExp) RegExp와 일치하는 첫 번째 문자열의 위치를 ​​반환합니다. , 일치하는 항목이 없으면 -1을 반환합니다. 전역 태그는 한 번만 일치하므로 의미가 없습니다.
이 메서드는 regExp의 lastIndex 속성도 무시하고 항상 문자열의 시작 부분부터 검색합니다.

3. str.replace(RegExp,replaceText) RegExp와 일치하는 문자열을 replacementText로 바꿉니다. RegExp에 전역 설정이 없으면 전역 패턴을 사용하면 한 번만 일치합니다. 일치하는 문자열을 모두 바꿉니다.
RegExp에서 캡처 그룹 일치가 사용되는 경우, replacementText의 $는 특별한 의미를 갖습니다.
$1, $2,...,$99 //RegExp의 1~99번째 하위 표현식과 일치하는 텍스트입니다.
$& // 정규 표현식과 일치하는 하위 문자열입니다.
$` // 일치하는 하위 문자열 왼쪽에 있는 텍스트입니다.
$' // 일치하는 하위 문자열 오른쪽에 있는 텍스트입니다.
$$ // $ 기호 자체와 일치합니다.
RegExp에서 캡처 그룹 수를 고려해야 합니다. 캡처를 2개만 설정하면 $3은 더 이상 특별한 의미가 없습니다.
("123ab12c11d_4532").replace(/a(bd*)c (d*)d/,"$1@$2-")
//다음을 얻습니다:
"123b12@11-_4532"

4. str.replace(RegExp,function) str.replace의 두 번째 매개변수는 함수일 수 있으며 함수의 반환 값은 일치하는 문자의 대체 내용으로 사용됩니다.
RegExp를 전역적으로 일치시키려는 경우에는 여전히 글로벌 G 태그가 필요합니다.
함수의 매개변수는 다음과 같습니다:
일치하는 문자열,
구성된 캡처 하위 문자열(다중),
일치하는 문자열의 시작 위치,
일치하는 데 사용되는 원래 문자열
참고, 정의하세요. RegExp에 설정된 캡처 그룹 수에 따른 함수 매개 변수의 수 매개 변수가 너무 적으면 "일치하는 문자열의 시작 위치"와 "일치에 사용되는 원래 문자열"이 매개 변수에 나타나지 않을 수 있습니다. 물론 이 문제를 해결하기 위해 함수 내에서 인수 객체를 사용할 수도 있습니다. 인수(arguments.length-2)는 일치하는 문자열의 시작 위치이고 인수(arguments.length-1)는 일치에 사용되는 원래 문자열입니다. .

코드 복사 코드는 다음과 같습니다.
var newStr = ("123ab12c11d_4532"). 교체(/ a(bd*)c(d*)d/g,function(s,s1,s2,pos,oldStr){
return "@" s1 "@" s2 "@";
} ) ;
//
"123@b12@11@_4532"

을 얻습니다.
5. str.split(RegExp[,limit])
일치하는 문자열을 사용하여 문자열 str을 배열로 분할합니다. 제한은 선택 사항이며 반환되는 배열의 길이를 제한하는 데 사용됩니다. >("ada2afa4fcas6afa").split(/d/,3) // "ada,afa,fcas"

6. RegExp.exec("str") 메서드 in str 찾기 일치하는 문자열을 입력합니다. 이 메서드를 실행할 때마다 한 번만 일치합니다. 여러 번 일치하려면 RegExp를 /g로 설정하고 exec() 메서드를 여러 번 실행해야 합니다. = RegExp.exec( "str")
결과는 배열이고, 이 배열의 길이는 1이며, 배열 요소는 발견된 일치하는 하위 문자열입니다.
또한 이 배열에는 2개의 추가 속성이 할당됩니다. 🎜>result.index 일치하는 하위 문자열이 원래 문자열의 시작 부분에 있음을 나타냅니다.
result.input은 원래 문자열입니다.
일치하는 하위 문자열을 찾을 수 없으면 결과 = null을 반환하고 RegExp.lastIndex=0을 설정합니다.
RegExp.lastIndex는 현재 일치 항목이 시작될 문자열의 위치를 ​​나타내는 정규식의 속성입니다. 초기 값은 0입니다.
RegExp가 전역으로 설정된 경우 문자열을 한 번 일치시킨 후 동일한 RegExp를 사용하여 새 문자열을 일치시키고 먼저 RegExp.lastIndex=0을 수동으로 설정하십시오.
RegExp가 전역 일치 모드가 아닌 경우 다른 항목을 작성했습니다. 반환 값 결과에 따라 일치를 종료할지 여부를 결정하기 위해 프로그램을 루프하여 문자열 일치를 시도합니다. 그러면 일치 조건을 충족하는 하위 문자열이 있는 한 필연적으로 무한 루프가 발생합니다. -전역 일치는 다음에만 적용됩니다. 문자열은 한 번 일치하고 일치 작업이 실행될 때마다 첫 번째 하위 문자열이 일치하며 반환된 결과는 비어 있지 않습니다. 이는 비교적 쉬운 실수입니다.


var str = "1Visit W3School, W3School is 웹 기술을 공부하는 곳입니다.";
var patt = new RegExp("W3School","g");
var result;
document.write(patt.lastIndex "
");
document.write("======================================
while ((result = patt.exec(str)) != null) {
document.write(patt.lastIndex "
");
document.write (result.constructor.name "
")
document.write(result.length "
")
document.write(result[ 0] "< br />");
document.write(result.index "
")
document.write(result.input "
" );
document.write("=================================
") ;
}
document.write(patt.lastIndex "
");
// 작업 결과:
========= ===== =======================
Array
W3School
W3School을 방문해 보세요. W3School은 웹 기술을 공부하는 곳입니다.
= ==================================
배열
W3School
W3School을 방문하세요. W3School은 웹 기술을 공부하는 곳입니다.
============================== =======


7. RegExp.test("str") 메서드
이 메서드는 반환만 한다는 점을 제외하면 RegExp.exec와 유사합니다. true 또는 false RegExp.lastIndex 의미는 동일합니다(테스트 메소드를 사용하든, exec 메소드를 사용하든 관계없이 RegExp의 속성입니다)
동일한 RegExp가 테스트 메소드와 exec 메소드를 사용하는 경우 이어서 RegExp.lastIndex=0을 수동으로 설정해야 할 수도 있습니다. 이 방법은 동일한 RegExp 개체의 lastIndex 속성을 공유하는 것입니다.


result = patt.test(str);
alert(result); //true
result = patt.test(str)
alert(result); >result = patt.test(str);
alert(result); //false


IE9에서는 str.match(reg)가 실행된 후 최신 버전의 chrome 및 firefox , 전역 일치 여부와 일치 결과 유무에 관계없이 lastindex가 재설정되고, reg.lastIndex = 0이며, reg.test(str) 실행 후 일반 일치가 비전역 일치인 경우 lastindex가 재설정됩니다. , re.lastIndex = 0. IE8 이하에서는 일반 일치가 실행된 후 일치하는 결과가 없으면 re.lastIndex는 문자열의 끝과 일치하는 마지막 문자의 위치 1입니다. 즉, lastIndex는 없습니다. 재설정되었습니다.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!