Decimal or numeric values in regular expression validation

前端 未结 10 1287
礼貌的吻别
礼貌的吻别 2020-11-22 15:09

I am trying to use a regular expression validation to check for only decimal values or numeric values. But user enters numeric value, it don\'t be first digit \"0\"

10条回答
  •  太阳男子
    2020-11-22 15:46

    A digit in the range 1-9 followed by zero or more other digits:

    ^[1-9]\d*$
    

    To allow numbers with an optional decimal point followed by digits. A digit in the range 1-9 followed by zero or more other digits then optionally followed by a decimal point followed by at least 1 digit:

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

    Notes:

    • The ^ and $ anchor to the start and end basically saying that the whole string must match the pattern

    • ()? matches 0 or 1 of the whole thing between the brackets

    Update to handle commas:

    In regular expressions . has a special meaning - match any single character. To match literally a . in a string you need to escape the . using \. This is the meaning of the \. in the regexp above. So if you want to use comma instead the pattern is simply:

    ^[1-9]\d*(,\d+)?$
    

    Further update to handle commas and full stops

    If you want to allow a . between groups of digits and a , between the integral and the fractional parts then try:

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

    i.e. this is a digit in the range 1-9 followed by up to 2 other digits then zero or more groups of a full stop followed by 3 digits then optionally your comma and digits as before.

    If you want to allow a . anywhere between the digits then try:

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

    i.e. a digit 1-9 followed by zero or more digits or full stops optionally followed by a comma and one or more digits.

提交回复
热议问题