2010-02-19 8 views
7

나는 목적은 단일 글자 단어 (예를 들어, 전치사)를 가지고 대신 표준 공간, 그 후 비 분리 공백을 추가하는 것입니다자바 스크립트 정규식 대체 - 일치하는 문자열의 일부만 대체 하시겠습니까?

myString.replace(/\s\w(?=\s)/,"$1\xA0"); 

기능을 대체 할 다음있다.

그러나 위의 1 달러 변수는 저에게 적합하지 않습니다. 원래 일치하는 문자열 + nbsp의 일부 대신 "$ 1"텍스트를 삽입합니다.

관찰 된 동작의 이유는 무엇입니까? 그것을 성취 할 다른 방법이 있습니까?

답변

9

$ 1은 캡처 하위 그룹이 없기 때문에 작동하지 않습니다.

정규식은 /\b(\w+)\s+/과 같아야합니다.

+0

예, "캡처 그룹"은 제가 누락 된 부분이었습니다. 고마워요! –

+0

감사합니다. 그것은 잘 문서화되지 않았고 나는 그것을 이해할 수 없었습니다. –

5

는이 같은 수행 할 것 같습니다 :

myString.replace(/\s(\w)\s/,"$1\xA0"); 

을하지만, 그런 식으로 당신은 당신의 단일 문자 단어 앞에 공백을 잃어 버리게된다. 따라서 캡처 그룹에 첫 번째 \s도 포함하고자합니다.

+0

이봐,이 작품은 매력처럼! 정말 고마워. 나는 "그룹 캡쳐"에 대해 몰랐지만 그런 의심스러운 것이있었습니다. –

관련 문제