2011-01-13 6 views
0

나는 그 안에 입력 된 텍스트의 시작과 끝에 "["과 "]"를 추가 할 수있는 HTML 텍스트 영역을 만들었습니다.Javascript Regex 브라우저에서 대체 뉴 라인 처리

내 문제는 텍스트 영역에 여러 줄의 데이터를 입력하면 정규 표현식이 ff에서 다르게 처리된다는 것입니다.

입력 :

Iam 
learning 
regex 

예상 출력 : IE에서

[Iam] 
[learning] 
[regex] 

출력 (I는 FF이 얻을) :

[Iam 
][] 
[learning 
][] 
[regex] 

정규식 코드는 여기에 있습니다 :

(textareaIDelement.value).replace(/(^)(.*)(\n{0,})($)/gm, "[" + "$2" +"]"); 
(210)

내가 줄 바꿈과 일치하는 정규 표현식에 (\n{0,}) 추가 ..하지만이 적용되지 않습니다 ..

감사

+0

'{0,} (0 회 이상 반복)은'*'로 쓰여질 수 있습니다. –

답변

3

의 textarea의 value 속성에서 줄 구분 기호는 \r\n입니다. 다른 모든 주요 브라우저에서는 \n입니다. 간단한 해결책은 라인 구분자를 \n으로 먼저 정규화하는 것입니다. 또한 정규 표현식을 단순화했습니다.

textareaIDelement.value.replace(/\r\n/g, "\n").replace(/^(.*)\n*$/gm, "[$1]"); 
+0

감사합니다. - 잘됐다 !! – Sekhar

1

내 생각 엔 파이어 폭스는 선으로 단일 0x0A (\n)를 사용하고 있다는 점이다 구분 기호, IE는 Windows 구분자 0x0D 0x0A (\r\n)을 사용합니다.

정규 표현식 라이브러리의 정확한 의미에 따라 라인 구분 기호로 각각의 WIndows 문자를 독립적으로 일치시킬 수 있으므로 줄 끝 부분과 0 문자 줄을 감지합니다.

(나는 대규모 JS 정규식 메타 문자를 처리하는 방법을 정확하게에 익숙하지 않아요로서 이것은, 그 자체로 실제 대답은 아니지만, 희망이 옳은 방향으로 당신을 가리 킵니다.) IE에서

+0

첫 번째 요점이 정확합니다. –