2013-08-13 2 views
-1
^((\w+)|(\\.))+$/ 

단어 문자 시퀀스 또는 백 슬래시의 시퀀스와 임의의 문자가 일치한다고 말합니다. 일치하지 왜하지만 "형태"정규 표현식을 이해합니다

var pattern = /^(\w+)|(\\.)$/; 
    var s=pattern.exec("form:update"); 
    alert(s); 

일치하는 문자열 "양식", 로하지만, 외부 괄호 "형태로 갱신"을, 그렇지가 않습니다.

두 개의 내부 괄호가 캡슐에 사용됩니까? 바깥 쪽도? 그리고이 예제에서는 litte cofuse가 있습니다.

var pattern = /^((\w+)|(\\.))+$/; 
    var s=pattern.exec("form\\.update\\.whatever"); 

이유 S [1] =이든, S [2] =이든, S [3] = \.

+0

정확히 일치시키려는 대상은 무엇입니까? –

+0

'^'와'$'는 문자열의 시작과 끝을 의미하므로'form : update'의'form'은 유효한 일치가 아닙니다 – Diryboy

+0

일치 시키려고하는 것이 아니라, 나는 이것을 배우고 있습니다. 무엇을 찾고 싶습니다. 이 정규 표현식입니다. –

답변

2

이 서로 일치하도록 시도하십시오, 다음이 백 슬래시가 발생하면, 일련의 단어를 일치를 일치 (무엇을 걱정하지 않는다) 하나의 문자와 일치 문자열의 처음부터

을 말한다 단어의 순서 및 문자열 끝까지 반복합니다.

var pattern = /^((\w+)|(\\.))+$/; 
var s = pattern.exec("form\\.update\\.whatever"); 

경기 순서는 form\.update\.whatever

\\는 자바 스크립트 정규식 문자열 내부 \ 의미주의입니다. .은 단지 "any char"을 의미합니다. 경기 순서는 form\5update\4whatever

이유들 [1] = 무엇이든의 [

이 여전히 말, 작동하는 모든 문자에 .를 교체 할 경우,

var pattern = /^((\w+)|(\\.))+$/; 
var s = pattern.exec("form\\5update\\4whatever"); 

입니다 2] = 뭐든지, s [3] =. 자바 스크립트는 형태 (...)+의 마지막 캡처를 유지하기 때문에입니다

, 첫 번째 그룹의

캡처 그래서 당신은 두 번째 그룹의 whatever

캡처가된다 얻을 \.update\.whateverform 있습니다 formupdatewhatever 그래서 얻을 수 whatever

세 번째 그룹의 캡처는 \.\.이므로 \.

관련 문제