2011-10-10 2 views
5

자바 스크립트에서 정규 표현식이 필요합니다. 양수와 소수 만 사용할 수 있습니다. 이것은 내가 가진 것이지만 뭔가 잘못되었습니다 - 그것은 하나의 양수를 취하지 않는 것 같습니다.양수와 소수 만 허용하는 정규 표현식

예를 들어, 9은 작동하지 않습니다. 이 구조를 어떻게 바꿀 수 있습니까? 적어도 하나 이상의 양수가 있으면 작동할까요?

+0

각 [0-9] 문자 클래스 다음에 +가 있기 때문에 십진수가없는 숫자는 최소 두 자릿수가되어야합니다. –

답변

14
/^[+]?([0-9]+(?:[\.][0-9]*)?|\.[0-9]+)$/ 

일치

0 
+0 
1. 
1.5 
.5 

하지만

. 
1..5 
1.2.3 
-1 

편집 :

하여 처리 할 수있는 과학적 표기법 (1e6), 당신은 어떤 제로, 당신은 할 수 없다 당신이 엄격하게 양수를 원하는 경우에

/^[+]?([0-9]+(?:[\.][0-9]*)?|\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/ 

작업을 수행 할 수 있습니다처럼 대해 어떻게

/^[+]?([1-9][0-9]*(?:[\.][0-9]*)?|0*\.0*[1-9][0-9]*)(?:[eE][+-][0-9]+)?$/ 
+0

네, 이건 꽤 좋은데 .. 문제를 찾을 수 없습니다. –

+0

@MikeChristensen, 과학 표기법을 다루지는 않지만, 그것을 처리하기 위해'$ '앞에 선택적인 [[eE] [+ -]? [0-9] +'를 칠할 수 있습니다. –

1

할 일이 몇 가지 방법이 있습니다이 당신의 필요에 따라 :

/^[0-9.]+$/ 일치 11.1하지만 -1

/^[0-9]+\.[0-9]+$/ 일치 1.1하지만 1 또는 일반적으로 -1

, 내가 사용하는 것이 좋습니다하지 표현식을 작성하기위한 간단한 regExp 참조 가이드 (예 : http://www.regular-expressions.info/)를 사용한 다음 java 스크립트 바로 브라우저 콘솔 :

"123.45".match(/^[0-9.]+$/)

+0

'...'도 포함됩니다. – NT3RP

+0

사실 - 편집하기 전에 질문이 더 넓어진 것 같았습니다. –

1

:

^[.]?[0-9]+[.]?[0-9]*$ 
+0

그것도'.0.0'과 일치하지 않을까요? – NT3RP

+0

네, 그건 하나의 문제입니다. "or"절을 사용하는 것이 최선의 방법이라고 생각합니다. –

0

당신은 시도 할 수 있습니다 이 -

^\d{0,10}(\.\d{0,2})?$ 

테스트 할 멋진 사이트뿐만 아니라 자신의 정규 표현식에 대한 설명을 얻으려면 https://regex101.com/