정규 표현 식 g, m 매개 변수 에 대한 정 리 는 '정규 표현 식 (/ [^ 0 - 9] / g,') 의 '/ g' 이 무슨 뜻 입 니까? '

4093 단어 정규 표현 식
'정규 표현 식 (/ [^ 0 - 9] / g,') 의 '/ g' 이 무슨 뜻 입 니까? '라 는 문 제 를 풀기 위해 정규 표현 식 에 대해 더욱 종합 적 이 고 깊 은 인식 을 가 질 수 있 도록 관건 적 인 부분 과 헷 갈 리 기 쉬 운 부분 을 체계적으로 정리 하 겠 습 니 다.요약 1: 첨부 된 매개 변수 g 의 용법 표현 식 에 매개 변수 g 를 추가 한 후에 전체 적 으로 일치 할 수 있 음 을 나타 내 고 여기 서 '가능 하 다' 는 의 미 를 주의 하 십시오.우 리 는 상세 하 게 설명 합 니 다: 1) 표현 식 대상 의 exec 방법 에 대해 g 를 추가 하지 않 으 면 첫 번 째 일치 만 되 돌려 줍 니 다. 몇 번 을 실행 하 든 그 렇 습 니 다. g 를 추가 하면 첫 번 째 실행 도 첫 번 째 일치 로 돌아 가 고 두 번 째 일치 로 돌아 가 며 순서대로 유추 합 니 다.예컨대
var regx=/user\d/;
var str=“user18dsdfuser2dsfsd”;
var rs=regx.exec(str);//  rs   {user1}
var rs2=regx.exec(str);//  rs     {user1} 

만약 regx = / user \ d / g;rs 의 값 은 {user 1} 이 고, rs2 의 값 은 {user 2} 입 니 다. 이 예 를 통 해 설명 합 니 다. exec 방법 에 대해 표현 식 은 g 를 추 가 했 습 니 다. exec 방법 을 실행 하면 모든 일치 하 는 것 을 되 돌 릴 수 있 는 것 이 아니 라 g 를 추가 한 후에 저 는 어떤 방식 으로 모든 일치 하 는 것 을 얻 을 수 있 습 니 다. 이 '방식' 은 exec 에 있어 서 순서대로 이 방법 을 실행 하면 됩 니 다.2) 표현 식 대상 의 test 방법 에 대해 g 를 넣 는 것 과 g 를 넣 지 않 는 것 은 별 차이 가 없다.3) String 대상 의 match 방법 에 대해 g 를 추가 하지 않 고 첫 번 째 일치 만 되 돌려 줍 니 다. match 방법 을 계속 실행 하면 항상 첫 번 째 일치 로 돌아 갑 니 다. g 를 추가 하면 한 번 에 모든 일치 로 돌아 갑 니 다. (표현 식 대상 의 exec 방법 과 달리 exec 에 있어 서 표 달 식 은 g 를 추가 하 더 라 도 한 번 에 모든 일치 로 돌아 가지 않 습 니 다)예 를 들 면:
var regx=/user\d/;
var str=“user1sdfsffuser2dfsdf”;
var rs=str.match(regx);//  rs   {user1}
var rs2=str.match(regx);//  rs     {user1} 

regx = / user \ d / g 이면 rs 의 값 은 {user 1, user 2} 이 고 rs2 의 값 도 {user 1, user 2} 4) String 대상 의 replace 방법 에 대해 표현 식 은 g 를 추가 하지 않 으 면 첫 번 째 일치 만 바 꾸 고 g 를 추가 하면 모든 일치 만 바 꿉 니 다.(시작 하 는 세 개의 테스트 문 제 는 이 점 을 잘 설명 할 수 있다) 5) String 대상 의 split 방법 에 g 를 추가 하 는 것 과 g 를 추가 하지 않 는 것 은 같다. 즉,:
var sep=/user\d/;
var array=“user1dfsfuser2dfsf”.split(sep); 

array 의 값 은 {dfsf, dfsf} 입 니 다. 이때 sep = / user \ d / g 이 고 반환 값 은 같 습 니 다.6) String 대상 의 search 방법 에 g 를 넣 든 말 든 마찬가지 입 니 다.요약 2: 추가 매개 변수 m 의 용법 추가 매개 변수 m 는 여러 줄 의 매 칭 을 할 수 있 음 을 나타 낸다. 그러나 이것 은 ^ 와 $모드 를 사용 할 때 만 작용 한다. 다른 모드 에서 m 를 추가 하지 않 아 도 여러 줄 의 매 칭 을 할 수 있다.
var regx=/^b./g;
var str=“bd76 dfsdf
sdfsdfs dffs
b76dsf sdfsdf”;
var rs=str.match(regx); 

이 때 g 를 추가 하 는 것 과 g 를 추가 하지 않 는 것 은 첫 번 째 일치 {bd} 만 되 돌려 줍 니 다. regx = / ^ b. / gm 이면 모든 일치 {bd, b7} 을 되 돌려 줍 니 다. regx = / ^ b. / m 이면 첫 번 째 일치 만 되 돌려 줍 니 다.따라서 m 를 넣 으 면 여러 줄 의 매 칭 을 할 수 있 음 을 나타 내 고 g 를 넣 으 면 전체 매 칭 을 할 수 있 음 을 나타 낸다. 종합 하면 여러 줄 의 전체 매 칭 을 할 수 있다. 2) 다른 모델 을 사용 하 는 예 이다. 예 를 들 어
var regx=/user\d/;
var str=“sdfsfsdfsdf
sdfsuser3 dffs
b76dsf user6”;
var rs=str.match(regx); 

 
이 때 인자 g 를 추가 하지 않 으 면 {user 3} 을 되 돌려 주 고, 인자 g 를 추가 하면 {user 3, user 6} 을 되 돌려 주 며, m 를 추가 하지 않 으 면 영향 을 주지 않 습 니 다.3) 따라서 m 에 대해 우 리 는 그것 의 사용 을 잘 알 아야 한다. 이것 은 ^ 와 $모드 에 만 작용 한 다 는 것 을 기억 해 야 한다. 이 두 가지 모드 에서 m 의 역할 은 m 를 넣 지 않 으 면 첫 줄 에서 만 일치 할 수 있 고 m 를 넣 으 면 모든 줄 에서 일치 할 수 있다.우 리 는 ^ 의 예 를 하나 더 보 자.
var regx=/^b./;
var str=“ret76 dfsdf
bjfsdfs dffs
b76dsf sdfsdf”;
var rs=str.match(regx); 

이 때 rs 의 값 은 null 입 니 다. g 를 넣 으 면 rs 의 값 은 null 입 니 다. m 를 넣 으 면 rs 의 값 은 {bj} 입 니 다.(m 만 추가 하고 g 설명 을 추가 하지 않 으 면 여러 줄 로 일치 할 수 있 지만 일치 하 는 것 을 찾 으 면 되 돌아 갑 니 다. g 를 추가 하면 여러 줄 의 일치 하 는 것 을 되 돌려 줍 니 다. 물론 match 방법 에 대해 서 는 이 렇 습 니 다. exec 에 대해 서 는 여러 번 실행 해 야 순서대로 되 돌아 갈 수 있 습 니 다) 요약 3: HTML textarea 입력 필드 에서 Enter 키 를 누 르 면 해당 하 는 제어 문 자 는 '\ r' 입 니 다. 즉,'차 를 갈 아 타 는 것' 은 '\ r' 가 아니 라 '차 를 갈 아 타 는 것' 이다. 우 리 는 앞에서 우리 가 들 었 던 예 를 보 자.
var regx=/a\r
bc/; var str=“a bc”; var rs=regx.exec(str);

결과: 일치 에 성 공 했 습 니 다. rs 의 값 은 {} 입 니 다. 표현 식 이 / a \ rbc / 이면 일치 하지 않 습 니 다. 따라서 일반적인 편집기 에서 'Enter' 키 는 'Enter 줄 바 꾸 기' 가 아니 라 '줄 바 꾸 기' 를 의미 합 니 다. 적어도 textarea 필드 에 서 는 이 렇 습 니 다.
 
 
다음으로 이동:http://www.cnblogs.com/shunyao8210/archive/2008/11/13/1332591.html

좋은 웹페이지 즐겨찾기