Javascript正则表达式的帮助

Assistance with a regular expression Javascript

本文关键字:帮助 正则表达式 Javascript      更新时间:2023-09-26

我试图实现这个正则表达式检查。(1个整数,3位数字)

有效:

    0.236
  • 0.21
  • 1.231
  • 1.01
无效:

    12.23
  • 12321
  • 0.21323

我希望只有1位后面跟着一个0-3位的小数

任何帮助都太好了。我试过了:^(([0-9]{1})?(?='.)[0-9]{0,3})|([0-9]{1})$但是没有锁。

编辑:我应该补充说,我正在使用一个名为inputmask的JQuery插件。我希望输入掩码只接受我的要求。

要对jquery-inputmask执行此操作,请使用

<input id="example2" data-inputmask-regex="/^'d{1}'.'d{0,3}$/" />

然后在JavaScript文件中添加

$(document).ready(function(){
   $("#example2").inputmask("Regex");
});

下面是Regex分解

^ - Regex必须以这个表达式

开头

'd{1} - 0到9的精确1位

'. -后接句号。重要的是要注意句号必须转义

'd{0,3} -后面跟着0 ~ 3位数字

$ - Regex必须以

结尾

我测试了你所有的例子

我想要一个只有0-3位小数的整数。

通过"1个整数",我认为你是指一个数字,因为12是一个整数。如果是这样:

'd'.'d{0,3}

匹配单个数字,后跟.,后跟0到3个数字。如果您想进一步断言它与整个字符串匹配,请在两端添加锚:

^'d'.'d{0,3}$

请注意,您给出的规则允许1.,这似乎不是您想要的。如果你没有,那么我们需要做一些更多的工作:

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

表示:1位数字可选后跟1-3位数字的.。它有"整串"锚,如果你不想要它们,请删除它们。

实例使用最后一个:

var input = document.querySelector("input");
var rex = [
  /'d'.'d{0,3}/,
  /^'d'.'d{0,3}$/,
  /^'d(?:'.'d{1,3})?$/
];
input.oninput = input.onpaste = input.onkeypress = updateDisplay;
function updateDisplay() {
  rex.forEach(function(r, index) {
    var display = document.getElementById("r" + index);
    if (!input.value) {
      display.innerHTML = "--";
    } else if (input.value.match(r)) {
      display.innerHTML = "valid";
    } else {
      display.innerHTML = "INVALID";
    }
  });
}
<input type="text">
<p><code>/'d'.'d{0,3}/</code> says: <span id="r0"></span></p>
<p><code>/^'d'.'d{0,3}$/</code> says: <span id="r1"></span></p>
<p><code>/^'d(?:'.'d{1,3})?$/</code> says: <span id="r2"></span></p>