【问题标题】:Regex up to 4-digit number and/or up to 4 decimal places正则表达式最多 4 位数字和/或最多 4 位小数
【发布时间】:2021-03-26 12:04:55
【问题描述】:

我需要一个允许最多 4 位数字和/或 4 个小数位的正则表达式。

仅允许的格式示例(我只是使用 1 来使格式看起来简单,都应该是 [0-9])

1 
1.1
1.11
1.111
1.1111
11
11.1
11.11
11.111
11.1111
111
111.1
111.11
111.111
111.1111
1111
1111.1
1111.11
1111.111
1111.1111

到目前为止我得到的最接近的一个--

"^[0-9]{0,4}(?:.[0-9]{0,4}$)"

当我输入数字+小数时效果很好。 但是,如果我只输入不带小数的数字,我可以输入 4 个以上的数字,这是不应该的。

【问题讨论】:

  • 如果这是用于实时输入验证,您需要^[0-9]{0,4}(?:[.][0-9]{0,4})?$
  • 这太完美了!太感谢了!我有点接近.... jk 我不是。哈哈再次感谢!
  • /^\d{1,4}(\.\d{1,4})?$/
  • @WiktorStribiżew,如果我想再添加一个条件,即格式不应允许负数.. 最好的方法是什么?只需简单地添加 ^\-[0-9]{0,4}(?:[.][0-9]{0,4})?$ 你怎么看?
  • /^\d{0,4}(?:\.\d{0,4})?$/ 不允许负数。如果您想允许它们,请添加可选的-/^-?\d{0,4}(?:\.\d{0,4})?$/

标签: javascript regex


【解决方案1】:

^[0-9]{0,4}(?:.[0-9]{0,4}$) 似乎几乎对你有用。由于. 未转义,因此它匹配任何字符,包括数字,并且您认为它有效。

一旦您使用文字 \ 正确转义 .,它将停止“工作”,因为这需要一个点。

你需要使用

/^\d{0,4}(?:\.\d{0,4})?$/
"^[0-9]{0,4}(?:[.][0-9]{0,4})?$"

详情

  • ^ - 字符串开头
  • [0-9]{0,4} / \d{4} - 零到四位数
  • (?:\.[0-9]{0,4})? - . 的可选出现,然后是零到四位数
  • $ - 字符串结束。

【讨论】:

  • 这是正确的,但我会使用 \d{1,4} 而不是 \d{0,4} 以避免像 11..11 这样的字符串
  • @Andrea 它不是用于最终验证的正则表达式,而是用于 实时输入 验证。对于最终验证,必须使用/^\d{1,4}(?:\.\d{1,4})?$/
  • 是的,我错过了有关实时输入的信息。如果是 OP 的情况,\d{0,4} 绝对正确。
  • 这是我的解决方案 "/^(\d{0,4}|\d{0,4}\.\d{0,4}?)$/"
  • @JuanSánchez 和我的一样,但我的效率更高一点。另外,\d{0,4}?$ 之前的意义不大,与\d{0,4} 相同
猜你喜欢
  • 2020-10-20
  • 1970-01-01
  • 2016-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-04
  • 2021-12-26
  • 1970-01-01
相关资源
最近更新 更多