2012-11-11 3 views
1

I는 코드에 매칭이 패턴을 사용하는 기능을 복제하는 것을 시도하고는정규식 범위 네거티브에서 포지티브로 번호의 범위를 허용 2 진수

^1000([.][0]{1,3})?$|^\d{1,3}$|^\d{1,3}([.]\d{1,3})$|^([.]\d{1,3})$ 

이 정규식은 0 내지 수있게 허용하도록 1000하지만 내가 -1000에서 1000 음의 값을 허용하는 데 필요한 업데이트

\b([0-9]{1,3}|1000)\b 

그러나이다 또한 2 개 진수 범위의 값과 나는 완전히 내가 함께 알아 내기 위해 필요로 잃었어요 원래 패턴.

업데이트해야 할 범위가 더 많기 때문에 코드에 사용 된 패턴에 대한 설명을 알려 주시면 감사하겠습니다.

답변

0

두 정규식 사이에 약간의 차이가 있습니다. 원래, 원래 문자열은 숫자가 문자열의 모든 것이어야합니다. 두 번째 문자열은 문자열에서 별도의 숫자를 찾습니다. 예 : 번호가 지정된 형식의 있지만

1000.00 USD 

첫 번째 정규 표현식은 $ 앵커 일치 할 수 없기 때문에, 전혀 일치하지 않습니다. 두 번째 정규식은 일치하지만 1000 만 일치합니다.

이제 당신은 단지 전체 문자열이나 문자열과 일치 할 것인지 여부에 따라,도, 이것은 당신이 찾고있는 아마 :

^-?(?:\d{1,3}(?:[.]\d{1,2})?|1000(?:[.]0{1,2})?)$ 

또는

\b-?(?:\d{1,3}(?:[.]\d{1,2})?|1000(?:[.]0{1,2})?)\b 

당신은 this working demo에서 테스트 할 수 있습니다 .

데모에 표시되는 주요 경고는 앞에 오는 0이 허용된다는 것입니다.

+0

@ Ωmega는 OP의 요구 사항에 따라 달라지며 답변은 –

+0

3 분으로 표시됩니까? 와우. 설명해 주셔서 감사합니다. 이 정규식은 전체 문자열과 함께 작동합니다. ^ (\ -)? 1000 ([.] [0] {1,3})? $ |^(\ -)? \ d {1,3} $ |^(\ -)? \ d {1 , 3} ([.] \ d {1,3}) $ |^(\ -)? ([.] \ d {1,3}) $ 두 주 이상 걸릴 것이라고 생각합니다. 이 모든 기술에 사용 된 방법을 이해해야합니다. – user1816164