2012-05-30 2 views
1

내가 같은 문자열이 있습니다방법 이외의 문자열의 하위 문자열을 대체 할 ""

'a, b, "c,d" e, f,' 
내가 구분 기호로 쉼표 문자를 사용하여 내 문자열을 분할하고 싶은

을하지만 괄호의 외부. 내 결과 객체 세트는 다음과 같은 요소를 포함한다 :

a 
b 
"c,d" e 
f 

내가 어떻게 이것을 달성 할 수 있습니까?

답변

1
s = 'a, b, "c,d" e, f,'; 
console.log(s.match(/("[^"]+"|[^,])+/g)); 

는 여분의 공백이있는, [ 'a', ' b', ' "c,d" e', ' f' ]를 얻을 수 있지만, 당신이 그들을 트리밍 할 수 있습니다.

편집 : 누락 된 e ... 이제 수정되었습니다.

설명 :

  • (A|B)+ 문자열의 비 인용 일부인 대신 B의 (a 인용 문자열 임) A을 선호한다. "c,d"과 일치하고 + 때문에 e이 계속 일치합니다.
  • "[^"]+"" 다음에 모든 비 - "과 일치하며 그 다음에 단일 "이옵니다.
  • [^,]는 작동하기 때문에, 나는 또한 대단히 감사합니다,이 답변을 받아, (모든 일치, 바로 첫번째하지 일치)
+0

일을 어떤 비 "

  • /regex/g 글로벌하게 일치합니다. 그러나,이 정규식을 설명 할 수 있습니까? 다시 감사합니다. –

  • +0

    @ LajosArpad, 설명을 추가했습니다 ... 도움이되기를 바랍니다. –

    +0

    고마워, 내가 할 수 있으면 다시 upvote 것이다;) –

    관련 문제