两个小数位的Javascript正则表达式模式

时间:2019-03-16 13:42:34

标签: javascript regex

pattern = new RegExp('([0-9]+([.][0-9]{1,2})?|[.][0-9]{1,2})');

它应该接受 00.00, 0.0, 00.25, 00.36, 00.56 ,, 222.25, 222.25, 2222.25,

不应该接受 000.25, 0000.25

4 个答案:

答案 0 :(得分:1)

您可以使用此

^(?:(?!0{3,}).*)\.\d+$
  • ^-字符串的开头。
  • (?:(?!0{3,}).*)-在开始时避免超过2零的条件。
  • \.\d+-匹配.,后跟一个或多个数字。
  • $-字符串结尾

Demo

答案 1 :(得分:1)

如果您的值不能以零开头,则可以使用alternation

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

这将匹配:

  • ^字符串的开头
  • (?:非捕获组
    • (?:非捕获组
      • `0 {1,2} | [1-9] \ d *匹配零个1-2次或数字1-9和0+个数字
    • )?关闭捕获组并将其设置为可选
    • \.\d{1,2}匹配点和1-2位数字
    • |
    • [1-9]\d*匹配数字1-9,后跟数字0+次
  • )关闭非捕获组
  • $字符串的结尾

Regex101 demo

如果确实要允许前导零,则可以在第二个交替之前添加匹配的0+乘以零0*

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

Regex101 demo

答案 2 :(得分:0)

使用此:

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

说明

在点\.之前,它接受两个(|)中的任何一个:

  • ^[0-9]代码以0到9之间的任意数字开头
  • [1-9]+,然后,您想要的数字在1到9之间

或:

  • ^0{0,2}代码以最多两个零开头

答案 3 :(得分:0)

尝试一下:

(?<![0-9.])((?:[0-9]{1,2}|[1-9][0-9]*)(?:[.][0-9]{1,2})?)(?![0-9.])

注意 (?<!)(?!)。您可以根据需要省略锚点,但是即使该行包含数字以外的噪点,这些锚点也会使您的模式匹配。 (?<!X)坚持X不在比赛之前。 (?!X)坚持X不参加比赛。

[如果您要坚持X确实在前面和/或之后,那么您应该以{{1​​}}和/或(?<=X)为基础。]

根据您的示例的顺序,我的解决方案假定这些是可接受的:01.23; 00.23; 1.23。假设这些是不可接受的:011.23; 1.234。