2017-01-31 1 views
0

나는 일련의 숫자, 공백 또는 대시가 포함 된 문자열이있는 시나리오가 있습니다. 나는 길이가 14에서 16 사이 인 숫자의 그룹을 포착하려고합니다. 제가공백과 대시를 무시하고 특정 길이의 숫자 만 캡처하십시오.

만 상수 14 후속 숫자 길이 "내 데이터 문자열 34567892345567 또는 3456789234556734 또는 34567892345563434 5678 92345-567 또는 34--567 8923---4556-734 또는 34567-8923 455634 포함"

1. [0-9](?:[- ]?){14,16} 
2. [0-9]([- ]?){14,16} 
3. [0-9]{15,16}|[0-9]{4}.?[0-9]{4}.?[0-9]{4}.?[0-9]{3,4}|[0-9]{4}([\\ \\-]?)[0-9]{4}\1[0-9]{4}[ ]?[-]?[ ]?[0-9]{3,4}|[0-9]{14}|[0-9]{4}([\\ ?|\\-?]?)[0-9]{4}\1[0-9]{4}\1[0-9]{4} 

내 입력 문자열은, 아래와 같이 여러 가지 조합을 시도 15 또는 16 내 출력

1. 34567892345567 
2. 3456789234556734 
3. 345678923455634 
4. 34 5678 92345-567 
5. 34--567 8923---4556-734 
6. 34567-8923 455634 

이 그룹 위의 캡처하는 정규식을 제안하십시오, 그룹 다음 캡처한다.

답변

1

주위를 춤추고있었습니다.

([0-9][- ]*){14,16} 

설명 :
______[- ]*________ 0 이상의 하이픈 또는 공백

주 ... 다음의

(__________){14,16} 14~16 발생 ...
_[0-9]_____________ 숫자 : 이것은 것 끝 부분에 공백과 하이픈을 포함 시키되 시작 부분에는 포함시키지 마십시오.

(\d[ -]*?){14,16} 

:

([0-9][- ]*){13,15}[0-9] 
+0

감사합니다. 마지막에 공백과 하이픈을 제외하는 정규식으로 갈 것입니다. – Milindain

0

나는 다음과 같은 패턴을 사용합니다 : 마지막에, 사용 공간 및 하이픈을 제외하려면

[- ]*([0-9][- ]*){14,16} 

: 시작, 사용에서 공간 및 하이픈을 포함하려면 욕심이 없도록 패턴에 ?을 포함시켜야합니다. 이렇게하면 캡처 그룹에 후행 공백이 포함되지 않습니다.

https://regex101.com/r/JMNErk/1

관련 문제