2011-02-25 2 views
0
string = "bla;bla;bla;bla;bla;bla;bla;bla;bla;bla;bla;bla;bla;bla;bla;bla;bla;bla;bla;bla;bla;bla;bla;bla;"; 

bla는 와일드 카드입니다.Javascript Regex는 (는) 6 번째 항목을 대체합니다. (세미콜론); n (세미콜론 및 개행)

내가 세미콜론의 모든 여섯 번째 발생에 줄 바꿈 (\ n을)를 삽입하여 내 문자열을 업데이트 할 (;) 내가 정규식이 작업을 수행하기 위해 노력 해왔다

:


var myregexvar = textbox.value; 

myregexvar = myregexvar.replace(/\u003b.*\u003b.*\u003b.*\u003b\b/, /$1\n/); 

/u003b는 ';'의 유니 코드 문자 코드입니다.

작동하지 않습니다. 도움!

+0

당신은 [유사한 질문에 대한 내 대답 (http://stackoverflow.com/a/17852821/483113)를보고 할 수 있습니다 도움이 될 수 있습니다. – sjngm

답변

2

(([^;]*;){5}[^;]*);을 입력하고 $1\n으로 바꾸어보십시오.

첫 번째 그룹화 된 표현 ([^;]*;){5}은 5 개의 bla;을 찾습니다. 그런 다음 [^;]*은 여섯 번째가 bla (;없이)입니다. 모든 것은 $1으로 그룹화됩니다. 그런 다음 마지막 세미콜론이 별도로 매칭되므로 바뀌지 않고 대체 표현에서 \n으로 바뀝니다.

편집

는 대체하지, 모든 여섯 번째 세미콜론 후\n를 추가 싶었 실현하지 않았다. 이 간단한 일치 식인 ([^;]*;){6}을 사용할 수 있습니다.

+0

감사합니다. 너는 내 슬픔의 시간을 안심시켰다! 완성 코드 : myregexvar = myregexvar.replace (/ ((^;) *;) {5} [^;] *);/g, '$ 1 \ u003b \ n'); – boflexer

0

희망이 알고리즘

$occurance = 6; 
$count = 0; 
while (/\u003b/gi) { 
    if (++$count == $occurance) { 
     myregexvar.replace(/\u003b/, /\n/);   
    } 
} 
+0

'= ='너무 많이 분리 되나요? –

+0

나는 단지'algo'을 추천한다. 적절한 코드가 아니다. – diEcho

+0

mellamokb의 게시물이 처음이었고 효과가 있었기 때문에 그것을 시도하지 않았다. – boflexer

관련 문제