输入框onchange仅允许数字和一个点

时间:2018-01-22 22:21:46

标签: javascript regex reactjs

我正在创建一个带有onChange函数的输入框,该函数将检查字符是否只是数字,并且只允许最多一个句点/点'。'

我在这里的功能不起作用:

function addPercentSeparator(n) {
  let str = n;
  let match = str.match(/\d*\.\d*/)
  if (match) {
    return str;
  }
}

我也尝试过:let match = str.match(/^([0-9]+(\.[0-9]+)?)/)

我想要实现的只是允许一个时期。 如果用户输入的数字没有句点,则当他们在输入框外单击时,会在字符串末尾附加句点。

1 个答案:

答案 0 :(得分:1)

This正则表达式应该可以解决问题:

^\d*\.?\d*$

但如果你问我,我会确保使用^\d+\.?\d*$ 之前有之前的数字


说明:

  • 由于点不是强制性的,我添加了?,表示“0或1次出现”。
  • 我还添加了^$,以确保如果整个字符串都是非法的,则不会匹配字符串的任何部分。

我希望这适合你!