2014-02-12 5 views
1

문자열이있어서 정규 표현식과 String.replace()를 사용하여 문자열을 쉼표로 모두 제거하고 싶습니다. 그러나 웬일인지 쉼표가 하나만 있으면 데이터 수집 작업이 중단됩니다. 정규 표현식에 어떤 문제가 있습니까? 이유는 무엇입니까? 좀 더 구체적으로 말하면 "껍질을 벗긴"후 쉼표가 제거되었지만 "잘리지"않은 이유는 무엇입니까?자바 정규식 쉼표 감지가 작동하지 않습니다.

var troubledLine= "3 medium eggplants 6 unpeeled garlic cloves 1/2 cup extra virgin olive oil 3 ripe medium tomatoes peeled, seeded and chopped, juices reserved 1/5 tablespoon sweet paprika 1 pinch cayenne pepper salt freshly ground black pepper 1 tablespoon finely chopped fresh flat-leaf parsley" 

var correctedLine=troubledLine.replace(/,/,"RE","gi"); 
console.log(correctedLine); 

출력 = 3 매체 가지 6 개 껍질을 벗기지 다진 마늘 1/2 컵 엑스트라 버진 올리브 오일 3 개 익은 매체 토마토 시드 껍질을 벗겨 다진, 주스 1/5 큰술 달콤한 파프리카 1 핀치 고추 소금 갓 검은 후추를 접지 예약 잘게 잘게 자른 신선한 평지 파슬리 1 큰 숟가락.

+1

세 번째 매개 변수는 무엇입니까? 확실히'.replace()'는 두 개의 매개 변수만을 취합니다. – Travesty3

+0

수식어는'/,/g' 정규 표현식을 사용합니다. – elclanrs

+0

위와 같이'var correctedLine = troubledLine.replace (/,/gi);'를 사용하십시오. –

답변

2

replace 메서드는 2 개의 매개 변수를 사용하고 RegExp 메서드 구문을 사용하여 정규식 구문을 혼합하는 것처럼 보입니다. /,/g을 직접 사용하고 플래그를 정규식 패턴의 일부로 만들 수 있습니다. 두 번째 매개 변수는 대체 값이며,이 경우 빈 문자열입니다.

는 다음에 코드를 변경

: 당신의 의도는 쉼표와 일치하는 것입니다

var correctedLine = troubledLine.replace(/,/g, ''); 

때문에 경우 문제가되지 않기 때문에, 당신은 i 깃발을 놓을 수 있습니다.

1

new RegExp.replace()에 대한 매개 변수를 혼동스럽게합니다.

당신은 .replace(/,/g, "")을 원합니다.

0

아마 조금 떨어져 주제는 특별히 정규 표현식을 요구하기 때문에,하지만, 여기 다른 방법으로 간다 :

correctedLine = troubledLine.split(',').join(''); 

그런 식으로 정규 표현식 없음 퍼즈를.

일부 info은 정규 표현식의 수정 자입니다.

관련 문제