我如何修改这个JavaScript正则表达式来检查字符串是否是一个最多必须有2个十进制数字的数字

How can I modify this JavaScript regex that checks if a string is a number that must have maximum 2 decimal digits?

本文关键字:一个 数字 十进制数字 2个 检查 修改 何修改 JavaScript 字符串 正则表达式 是否是      更新时间:2023-09-26

我是JavaScript正则表达式的新手,有以下问题。

在我正在使用的JQuery脚本中,我有以下regex,它似乎可以检查variazioneAnticipo变量中的值是否为十进制数:

var variazioneAnticipo = $("#variazioneAnticipo").val();
if (/^[0-9]+('.[0-9]+)?$/.test(variazioneAnticipo)) {
    ..................................................
    ..................................................
    DO SOMETHING
    ..................................................
    ..................................................
}

我认为这意味着上一个正则表达式对可以连接到的0到9(数字的整数部分)之间的任何数字连接都响应true符号(十进制分隔符),后跟由0到0(十进制部分)的数字组成的任何字符串。

因此它将接受字符串为:

105或105.1或105.12或105.31243123123131231

好的,我如何修改以前的正则表达式,使其只接受表示最多有2个十进制数字的字符串?

例如:

105必须被接受

105.1必须被接受

必须接受105.12

但是:

105.123不得接受

'.[0-9]旁边添加重复或范围限定符。。

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

[0-9]{1,2}应匹配一位或两位数字。

尝试将pattern属性与RegExp^'d+$|^'d+'.'d+{2}$this.checkValidity() 一起使用

$("#variazioneAnticipo").on("input", function() {
  if (this.checkValidity()) {
    $("label").html("");
    var variazioneAnticipo = $(this).val();
    console.log(variazioneAnticipo
                ,this.checkValidity());
  } else {
    $("label").html("invalid input")
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<input id="variazioneAnticipo" class="rightAlligned form-control" style="width: 60%" type="number" step="0.01" min="0" value="${progetto.impAcc}" pattern="^'d+$|^'d+'.'d+{2}$"/>
<label></label>

下面的表达式只匹配最多有2位小数的数字。

^'d+(?:'.'d{1,2})?$

要获得更好的解释,请单击此处

如果你想自定义它,只需修改重复的范围。例如:

  1. 修改N和/或M以更改接受的小数范围。

    ^''d+(?:.''d{N,M})?$

  2. 修改N和/或M以更改接受的整数范围。

    ^''d{N,M}(?:.''d{1,2})?$

下面的代码段将相关的regex应用于javascript test()指令。

function testRegex(){
  var data = $("#digits").val();
  if(/^'d+(?:'.'d{1,2})?$/.test(data))
    alert("It's ok");
  else{
    alert("Sorry, it's not a valid input");  
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="digits" />
<button onclick="testRegex();" type="button">Test it</button>