如何验证密钥

时间:2017-04-27 23:08:47

标签: javascript jquery

我使用带有正则表达式的函数来验证输入时没有前导零的整数值:

$('input.input-number').keyup(function(e) {
    var regexp = (/[^0-9]|^0+(?!$)/g);

    if (regexp.test(this.value)) {
        this.value = this.value.replace(regexp, '');
    }
});

如何调整它以考虑浮点数。 该功能应该:

  • 不允许多个'。'签收:123.342.08 =无效/ 123.34208 =有效
  • 不允许'。'在字符串的开头签名:.012 =无效/ 0.012 =有效
  • 不允许整数部分中的前导零:00.012 =无效/ 0.012 =有效
  • 不允许在十进制小数部分中使用尾随零:10.012000 =无效/ 10.012 =有效

2 个答案:

答案 0 :(得分:2)

如果字符串不包含数字和!字符,则可以使用RegExp运算符/[^\d.]+|^(0{2}|\.)|(0$)|\.(?=\.|.+\.)/ false返回".",以2开头或者更多"0"字符或"."字符或字符串结尾为"0",或字符串包含"."字符后跟"."或一个或多个数字后跟{ {1}},否则使用"."

返回true

RegExp.prototype.test()

答案 1 :(得分:0)

感谢@ guest271314的帮助,我终于升级了现在可以处理整数或浮点输入验证的初始函数(但是,不需要处理小数部分中的尾随零)。

这是我用来验证整数或浮点值的数字输入(使用jQuery的不显眼的样式):



$('input[name="number"]').keyup(function(e) {
    var float = parseFloat($(this).attr('data-float'));

    /* 2 regexp for validating integer and float inputs *****
        > integer_regexp : allow numbers, but do not allow leading zeros
        > float_regexp : allow numbers + only one dot sign (and only in the middle of the string), but do not allow leading zeros in the integer part
    *************************************************************************/
    var integer_regexp = (/[^0-9]|^0+(?!$)/g);
    var float_regexp = (/[^0-9\.]|^\.+(?!$)|^0+(?=[0-9]+)|\.(?=\.|.+\.)/g);

    var regexp = (float % 1 === 0) ? integer_regexp : float_regexp;
    if (regexp.test(this.value)) {
        this.value = this.value.replace(regexp, '');
    }
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" data-float="1" id="number" name="number" placeholder="integer">
<input type="text" data-float="0.1" id="number" name="number" placeholder="float">
&#13;
&#13;
&#13;