2013-06-11 8 views
0

분할 중이 형식 읽을 수 있습니다정규식 : 때때로, 밑줄에 내가 문자열을

 
Static_1264_1264_11232013_1234 

또는이 형식 :

 
Static_1264__11232013_1234 

주 두 번째 예는 1264 '의 단 하나 개의 인스턴스가 '그리고 두 번째 것이 있어야 할 곳은 여전히 ​​앞뒤에 밑줄이 있습니다. 내가 거기에 값을 보장되었을 때 나는 다른 곳에서 전달 된 문자열을 변수로 분할이 정규식을 사용 :

([^_]+)_([^_]+)_([^_]+)_([^_]+)_([^/]+) 

을하지만 그 두 번째 숫자가 누락 된 경기를 관람하지 않습니다. 두 번째 부분에 비 탐욕적인 가치를 추가하려고 시도했습니다.

([^_]+)_([^_]+)_([^_]+?)_([^_]+)_([^/]+) 

그러나 그 역시 도움이되지 않았습니다.

답변

3

+은 "이전 요소를 한 번 이상 일치시킵니다"를 의미합니다. 당신이 뭔가는 선택 사양 일하려면, "이전 요소를 0 번 이상 일치"를 의미하는 대신 *를 사용

([^_]+)_([^_]+)_([^_]*)_([^_]+)_([^/]+) 
+0

굉장합니다, 고마워요. – iYeager

2

왜 그냥 사용

var str = 'Static_1264__1264_11232013_1234'; 
str.match(/([^_]+)/g); 

출력 :

["Static", "1264", "1264", "11232013", "1234"] 
+0

훨씬 더 깨끗합니다. 감사. – iYeager