2011-01-18 2 views
1

문자열을 반환하도록 자바 정규 표현식을 수정하는 방법 "" "Collagenanals of Plastic Surger Jan 1999 vol 42 pg 21 26." ""?자바 정규 표현식 범위에서 큰 따옴표를 올바르게 이스케이프 처리

정규식 범위에서 큰 따옴표를 올바르게 이스케이프 처리하려면 어떻게해야합니까?

(방화범의 시도) :

>>> var input="Collawn \"Annals of Plastic Surgery\" Jan 1999 vol 42 pg 21 26" 
>>> input.replace(/[\.,:\[\]-]/g, ' '); 
"Collawn "Annals of Plastic Surgery" Jan 1999 vol 42 pg 21 26" 
>>> input.replace(/[\.,:\[\]-\"]/g, ' '); 
SyntaxError: invalid range in character class { message="invalid range in character class", more...} 

답변

1

문제는 "하지만 -하지 않습니다 - 당신이 문자 그대로 돌진을 의미하려는 경우, 당신은 시작이나 끝에 넣을 필요 문자 클래스 :

input.replace(/[.,:\[\]"-]/g, ' '); 

그렇지 않으면 A-Z는 "A ~ Z까지 모든 문자"를 의미하고 정규식 (34) ([-"는 ASCII (91)이 될 것입니다 잘못된 범위 Z-A의 동등 포함). 여기

1

문제가 \]-\"시작>단부 같은 잘못된 범위 "] (U + 005D) (+ 0,022 U)에서 문자 영역을 설명하는 것이다. 또한, 위치에 따라, 그런데

/[\.,:\[\]\-\"]/g 

, 당신은 단지 ]을 탈출해야하고, \, 그리고 :

너무 - 탈출 또는 문자 클래스의 시작 또는 끝 부분에 넣어

문자 클래스 내에서 -^이므로

/[.,:[\]\-"]/g 
관련 문제