[regex] 십진수 정규식, 십진수 뒤의 숫자는 선택 사항입니다.

숫자를 확인하는 정규식이 필요하지만 소수점 뒤의 숫자는 필요하지 않습니다. 즉.

123
123.
123.4

모두 유효할까요

123..

유효하지 않다

누구라도 대단히 감사하겠습니다!



답변

다음을 사용하십시오.

/^\d*\.?\d*$/
  • ^ -줄의 시작;
  • \d* -0 개 이상의 숫자;
  • \.?-선택적 점 (정규식에서는 .특수 문자 이므로 이스케이프 됨 )
  • \d* -0 개 이상의 숫자 (소수점)
  • $ -줄 끝.

이것은 0.5와 같은 선행 0을 요구하는 대신 .5 십진수를 허용합니다.


답변

/\d+\.?\d*/

하나 이상의 숫자 ( \d+), 선택적 마침표 ( \.?), 0 개 이상의 숫자 ( \d*).

사용 또는 정규식 엔진에 따라 시작 / 끝 줄 앵커를 추가해야 할 수 있습니다.

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

정규식 시각화

Debuggex 데모


답변

올바르게 수행하려면 다음과 같은 정규식이 필요합니다.

/^[+-]?((\d+(\.\d*)?)|(\.\d+))$/

확장 된 수정자를 사용하는 공백이있는 동일한 표현식 (Perl에서 지원됨) :

/^  [+-]? ( (\d+ (\.\d*)?)  |  (\.\d+) ) $/x

또는 의견 :

/^           # Beginning of string
 [+-]?       # Optional plus or minus character
 (           # Followed by either:
   (           #   Start of first option
     \d+       #   One or more digits
     (\.\d*)?  #   Optionally followed by: one decimal point and zero or more digits
   )           #   End of first option
   |           # or
   (\.\d+)     #   One decimal point followed by one or more digits
 )           # End of grouping of the OR options
 $           # End of string (i.e. no extra characters remaining)
 /x          # Extended modifier (allows whitespace & comments in regular expression)

예를 들어 다음과 일치합니다.

  • 123
  • 23.45
  • 34.
  • .45
  • -123
  • -273.15
  • -42.
  • -.45
  • +516
  • +9.8
  • +2.
  • +.5

그리고 다음이 아닌 숫자를 거부합니다.

  • . (소수점 하나)
  • -. (마이너스 소수점)
  • +. (소수점 더하기)
  • (빈 문자열)

더 간단한 솔루션은 유효한 숫자를 잘못 거부하거나 이러한 숫자가 아닌 것과 일치시킬 수 있습니다.


답변

이 정규식을 시도하십시오.

\d+\.?\d*

\ d + 숫자 (선택적 십진수 앞자리)
.? 선택적 소수 (? 한정자로 인해 선택적)
\ d * 소수 이후 선택적 숫자


답변

모든 요구 사항과 일치하기 때문에 이것이 최선이라고 생각합니다.

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


답변

나는 다음을 사용하게되었다.

^\d*\.?\d+$

이로 인해 다음이 무효화됩니다.

.
3.


답변

이것을 사용할 수 있습니다.

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

일치 :
11
11.1
0.2

일치하지 않음 :
.2
2.
2.6.9