2016-08-05 1 views
3

예를 들어 숫자가인 경우 숫자 3을 얻고 싶습니다. ['22','345','678']을 얻고 싶습니다. 내 정규식을 개선하기 위해 내가 ['22','345']Javascript는 3의 숫자 덩어리와 일치하는 정규 표현식을 향상

는 누구든지 나를 도울 수 얻을 다음 정규식

/(\d{1,3})(?=(\d{3})+(?!\d))/g 

를 사용하십니까? 여기

예는 ->https://regex101.com/r/cF6rN4/1 이 포스트의 단편 (3)의 배율이나 끝에 길이 자릿수 따른다

console.log('22345678'.match(/(\d{1,3})(?=(\d{3})+(?!\d))/g));

+0

@BryceDrew : 그는 작동 버전이 없습니다. 마지막 세 자리와 일치하지 않습니다. –

답변

5

대전 스트링.

Regex explanation here.

Regular expression visualization


이 필요하지 이후 당신은 캡처 그룹을 피할 수

console.log('22345678'.match(/\d{1,3}(?=(\d{3})+$|$)/g));

.
/\d{1,3}(?=(?:\d{3})+$|$)/g 
//---------^^^------------- 


UPDATE : 그것은 더 대신 파이프 기호를 방지하는 데 도움 + (1 이상의 반복)의 * (0 이상의 반복)를 사용하여 간략화 될 수있다. 예를 들어 @ torazaburo 님의 댓글 (\d{3})*$(\d{3})+$|$은 모두 같습니다.

/\d{1,3}(?=(\d{3})*$)/g 
+0

굉장! 감사! –

+0

@GonzaloPincheiraArancibia : 기꺼이 도와 드리겠습니다. –

+2

이것은/\ d {1,3} (? = (\ d {3}) * $)/g'와는 다른가요? –

관련 문제