javascript正则表达式得分

时间:2014-10-17 23:01:01

标签: javascript jquery regex

学生标记的正则表达式是什么:12.5,99.5,87,1.66

  • 该字段可以为空
  • (。)的最大字符长度为5,如下所示:99.99

  • 标记介于0到100之间

我用过这个,但它不起作用

var rmark = /^\d{0,1}\.|(\d{0,4})$/;


        var txtS = $(":text");

        for (var i = 0; i < txtS.length; i++) {
            if (!rmark.test(txtS.eq(i).val())) {
                er = 1; break;
            }
        }

2 个答案:

答案 0 :(得分:1)

由于您要验证的字符串似乎来自<input type="text">元素,因此您可以使用HTML5验证而不是JS验证,只需让浏览器为您执行此操作:

<input type="number" max="99.99" min="0" step=".01" />

但即使你需要使用JS进行验证,你仍然可以使用HTML5验证而不是正则表达式:

var isValid = (function() {
    var el = document.createElement('input');
    el.type = "number";
    el.max = 99.99;
    el.min = 0;
    el.step = .01;
    return function isValid(value) {
        el.value = value;
        return el.validity.valid;
    };
})();

答案 1 :(得分:1)

http://regex101.com/r/cX1qL4/1

/^\d{1,2}(\.\d{1,2})?$/

这意味着......

^           - from the start of the string
  \d{1,2}   - 1 or 2 digits
  (         - capture group that is not required
    \.      - escaped dot
    \d{1,2} - 1 or 2 digits
  )?        - this group is not required to present in the string
$           - end of the string

ps:如果它可以为空,那么/^(\d{1,2}(\.\d{1,2})?)?$/

pps:如果范围从0到100,那么/^(100|(\d{1,2})(\.\d{1,2})?)?$/

或者您可以在此处测试 - 运行代码段

$(function(){
 $('input').keyup(function() {
  var regexp = /^(100|(\d{1,2})(\.\d{1,2})?)?$/;
  if (!regexp.test($(this).val()))
    $(this).addClass('bad');
  else
    $(this).removeClass('bad');
 });
});
.bad {color:red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<input type="text">