2017-12-05 3 views
-1

$ 2 $ 1을 사용하여 단어의 시작 부분에서 자음 부분으로 이동하는 함수를 작성하려고합니다.Regex Group 단어 자리 부분을 바꿔 넣기로 캡쳐

내 코드가 아래에 있으며 문제를 조사하고 여러 가지 기능을 시도했습니다. 왜 작동하지 않는지 이해할 수 없습니다.

function groupCap(s){ 
    str = s.replace(/(^[b-df-hj-np-tv-z]+)(\.$)/, '$2$1'); 
    return str; 
} 
groupCap("map"); 
+1

정규식이 무엇을한다고 생각하는지 설명하는 것으로 시작하십시오. – CBroe

+1

's.replace (/^([b-df-hj-np-tv-z] +) (. *) /, '$ 2 $ 1')'? '(\. $)'는 점과 그 뒤에 나오는 문자열의 끝에 만 매치합니다. –

+0

@Wiktor Stribizew, 대답 할 수 있도록 답변으로 표시 할 수 있습니까? –

답변

1

\.$은 점과 일치하고 문자열 끝에 위치를 지정한다는 점에 유의하십시오. 문자열에있는 모든 문자를 그룹 2에 일치 시켜서 캡처해야합니다.

사용

function groupCap(s){ 
 
    str = s.replace(/^([b-df-hj-np-tv-z]+)(.*)/, '$2$1'); 
 
    return str; 
 
} 
 
console.log(groupCap("map"));
아무것도 이외의 문자를 라인과 일치하는 문자를 중단하고, [^] 일치하지 않습니다 .와 같은 문자열에 줄 바꿈이 될 수 있다면, [^]*.*를 교체하는 BMP 평면의 모든 문자입니다.

+1

추가 Regex 정보 @Wiktor Stribiżew 주셔서 감사합니다, 많이 감사드립니다. 나는 여전히 \을 사용하고 있다고 믿을 수 없다. 그것을 깨닫지 못하는 모든 종류의 변형을 시도하면서 그것을 보지 않는다. –