이 정규식에 음수 십진수를 어떻게 포함합니까?


89

이 정규식으로 음수를 어떻게 일치시킬 수 있습니까? 이 정규식은 양수 값으로 잘 작동하지만 -10, -125.5 등과 같은 음수 값도 허용하고 싶습니다.

^[0-9]\d*(\.\d+)?$

감사


1
@DanPuzey 그가 게시 한 Regex를 보지 못했습니까?
Nolonar


처음에 [-]를 추가하려고했지만 작동하지 않았습니다. 또한 작은 변화의 조합을 시도
user1786107

시도해보세요 ^-? \ d + (\. \ d +)? $
Civa 2013-04-04

@DanPuzey 당신의 말은 토론에 아무것도 추가하지 않고 불친절합니다
Wassadamo

답변:


173

당신은 추가하여 시작 부분에 선택적 하이픈을 추가해야합니다 -?( ?A는 한정 기호는 의미 하나 명 영 발생을 ) :

^-?[0-9]\d*(\.\d+)?$

다음 값으로 Rubular에서 확인했습니다.

10.00
-10.00

둘 다 예상대로 일치했습니다.


2
당신은 점, 즉 탈출한다^-?[0-9]\d*(\.\d+)?$
알렉스 Shesterov

14
명시 적으로 양수 (+10.00, 일부 응용 프로그램에서 사용)를 캡처해야 할 가능성이있는 경우 다음을 사용할 수 있습니다.^[-+]?[0-9]\d*(\.\d+)?$
Cemafor

127

몇 가지 정규식 예 :

양의 정수 :

^\d+$

음의 정수 :

^-\d+$

정수 :

^-?\d+$

양수 :

^\d*\.?\d+$

음수 :

^-\d*\.?\d+$

양수 또는 음수 :

^-?\d*\.{0,1}\d+$

전화 번호 :

^\+?[\d\s]{3,}$

코드가있는 전화 :

^\+?[\d\s]+\(?[\d\s]{10,}$

1900-2099 년 :

^(19|20)[\d]{2,2}$

날짜 (dd mm yyyy, d / m / yyyy 등) :

^([1-9]|0[1-9]|[12][0-9]|3[01])\D([1-9]|0[1-9]|1[012])\D(19[0-9][0-9]|20[0-9][0-9])$

IP v4 :

^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$

11

왜 그게 먼저 필요한지 모르겠어요 [0-9].

시험:

^-?\d*(\.\d+)?$

최신 정보

자리에 숫자가 있는지 확인하려면 다음을 사용하십시오.

^-?\d+(\.\d+)?$

1
아마도 1 자리의 숫자를 보장하기 위해서 ^-?\d+(\.\d+)?$일 것입니다. 그렇다면 작동해야합니다.
Cemafor

가장 적절한 대답. 받아 들인 대답에 표시된 것처럼 [0-9]가 필요하지 않다고 생각합니다.
UzumakiL

3

UPDATED (13/08/2014) : 이것은 양수와 음수에 가장 적합한 코드입니다 =)

(^-?0\.[0-9]*[1-9]+[0-9]*$)|(^-?[1-9]+[0-9]*((\.[0-9]*[1-9]+[0-9]*$)|(\.[0-9]+)))|(^-?[1-9]+[0-9]*$)|(^0$){1}

이 숫자로 시도하고 잘 작동합니다.

-1234454.3435
-98.99
-12.9
-12.34
-10.001
-3
-0.001
-000
-0.00
0
0.00
00000001.1
0.01
1201.0000001
1234454.3435
7638.98701

일치 -*하기 -?때문에로 변경하십시오 -------------.
Toto

몇 가지 추가 변경을 수행했으며 이제 정상적으로 작동합니다. 확인하십시오 =)
Pacho Zuñiga 2014-08-13

1

이것은 숫자가 뒤에 오는 경우에만 -또는 +문자 를 허용합니다 .

 ^([+-](?=\.?\d))?(\d+)?(\.\d+)?$

1

이것은 양의 정수와 음의 정수를 모두 허용합니다

ValidationExpression = "^-? [0-9] \ d * (\ d +)? $"


1

음수에서 양수로 필요한 장고 URL의 정규식에 대한 몇 가지 실험이 있습니다.

^(?P<pid>(\-\d+|\d+))$

(\-\d+|\d+)부분 에 초점을 맞추고 다른 부분을 무시 하겠습니다 .이 세미콜론 |은 정규식에서 OR 을 의미합니다 . 그러면 음수 값이이 \-\d+부분 과 일치 하고 양수 값 이이 부분 과 일치 합니다.\d+



0

0 또는 1 토큰을 추가하기 만하면됩니다.

^-?[0-9]\d*(.\d+)?$

Andre가 저를 이겼습니다. 그도 맞습니다. [0-9] 토큰은 필요하지 않습니다.
BanksySan 2013


0
^[+-]?\d{1,18}(\.\d{1,2})?$

양수 또는 음수 십진수 값을 허용합니다.


0

숫자에 대한 정규식, 선택적 소수점, 선택적 음수 :

^-?(\d*\.)?\d+$;

음의 정수, 십진수, 십진수와 함께 음수에 대해 작동합니다.


0
^(-?\d+\.)?-?\d+$

허용하다:

23425.23425
10.10
100
0
0.00
-100
-10.10
10.-10
-10.-10
-23425.23425
-23425.-23425
0.234

0

이 기능이 val="-12XXX.0abc23"있고 십진수 만 추출하려는 경우이 경우 정규식 ( ^-?[0-9]\d*(\.\d+)?$) 은이 를 달성하는 데 도움이되지 않습니다.
이것은 올바른 감지 정규식이있는 적절한 코드입니다.

var val="-12XXX.0abc23";
val = val.replace(/^\.|[^-?\d\.]|\.(?=.*\.)|^0+(?=\d)/g, '');
console.log(val);

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.