Html仅输入文本模式货币编号

时间:2014-12-17 09:30:38

标签: html regex

我想创建一个正则表达式,它接受小数点前的 0到14 位数(。)和小数点后的 0到6 位数。我该如何进一步采用以下模式?

<input type="text" pattern="\d+(\.\d{0,6})?" required/>

值类型:

  • 120 -match
  • 120.50 -match
  • 123456789012345.67 -not match
  • 12345678.2222 -match
  • 12345678.1234567 - 不匹配

2 个答案:

答案 0 :(得分:1)

从字面上理解时

  

小数点前0到14位(。)小数点后0到6位

(注意强调)你可以使用

^\d{0,14}\.\d{0,6}$

但它与120不匹配,所以显然小数点毕竟是可选的。将其更改为

^\d{0,14}(\.\d{0,6})?$

修复了 - 它还匹配1..77:)

问题是它还会匹配空字符串以及单个.。这可以通过使用前瞻强制至少一个数字来修复:

^(?=.?\d)\d{0,14}(\.?\d{0,6})?$

前瞻中的可选小数点是.1仍然有效。

答案 1 :(得分:0)

你可以尝试下面这个模式:

http://rubular.com/r/XMFlj5uvp0

\b[0-9]{1,8}\.[0-9]{1,6}\b|\b(?<!\.)[0-9]{1,8}(?!\.)\b