使用正则表达式Javascript协助

时间:2015-10-08 14:54:41

标签: javascript jquery regex jquery-inputmask

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

有效:

  • 0.236
  • 0.21
  • 1.231
  • 1.01

无效:

  • 12.23
  • 12321
  • 0.21323

我希望只有一位数跟随小数,只有0-3位小数。

任何帮助都会很棒。我试过这个: ^(([0-9]{1})?(?=\.)[0-9]{0,3})|([0-9]{1})$ 但没有锁。

编辑:我应该补充一点,我使用的是一个名为inputmask的JQuery插件。我想输入掩码只接受我的要求。

2 个答案:

答案 0 :(得分:1)

  

我希望只有一个小数后跟一个小数,后面只有0-3位数。

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

\d\.\d{0,3}

匹配单个数字后跟.后跟零到三位数。如果您想进一步声明它与整个字符串匹配,请将锚点添加到任一端:

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

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

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

即:一个数字可选后跟一个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>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

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

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

然后在您的JavaScript文件中添加此

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

这是Regex细分

^ - 正则表达式必须以此表达式

开头

\d{1} - 从0到9的正好1位数

\. - 接下来是一段时间。重要的是要注意句点必须被转义

\d{0,3} - 后跟0到3位

$ - 正则表达式必须以此表达式结束

我测试了你的所有例子。