如何使用jquery计算字符串中字符的出现次数

时间:2013-07-09 06:04:54

标签: jquery asp.net

我有一个文本框,我想计算'。'

的出现次数

如果文本框已经有'。'那么用户不能输入'。'来自他的主板

这是我的代码:

 $('.txt').keyup(function() {
            var ele = $(this).val();
            var contains = (ele.indexOf('.') > -1);
            if (contains) {
                var count = $(this).val().match(/./g);
                if (count > 1) {                    
                    var cont = $(this).val();
                    var str = $(this).val().length;

                    $(this).val(cont.substring(0, str));
                }                   
            }

        });

$(this).val()。match(/./ g)给出了'。'出现的索引。但我想计算它的出现次数。

7 个答案:

答案 0 :(得分:7)

您可以使用以下代码查找字符“。”的时间。发生在一个字符串中。

    var regex = new RegExp(/\./g)
    var count = "This is some text .".match(regex).length;

答案 1 :(得分:3)

你的正则表达式需要改变。 “”在正则表达式意味着一切。你需要逃避“。”。大概就是这样......

$(this).val().match(/\./g);

答案 2 :(得分:1)

你可以试试这个:

$('.txt').keyup(function() {
   var str = this.value;
   var a = str.split('.');
   if (a.length > 2) {
      this.value = a.slice(0, 2).join('.');//removes 2nd dot and the string following it
      //a[0] +='.'; this.value = a.join('');//only removes redundant dots (alternative)
   }
});

此处的出现次数为a.length-1

jsfiddle

答案 3 :(得分:0)

这正是你想要的...... :) Demo here

逃离角色并计算它。

使用Javascript:

 $('.txt').keyup(function() {
            var ele = $(this).val();

                            alert(ele.match(/\./g).length);

        });

HTML

<textarea id="txt"></textarea>

答案 4 :(得分:0)

尝试在onkeypress下面的javascript functinon或tex盒的onkeyup事件

并像这样打电话onkeypress = "return (event,'txtid',9,2)" beforelength在'。'之前。允许的数量和afterLength在“。”之后的数量。号码长度

function isNumberKey(event, obj, beforeLength, afterLength) {
    var keyCode1 = event.keyCode;

    var keyCode = 0;
    if (keyCode1 == 0)
        keyCode = event.which;
    else {
        keyCode = keyCode1;
    }

    //    alert(keyCode);
    //    alert(keyCode1);

    if ((keyCode >= 48 && keyCode <= 57) || keyCode == 46 || keyCode == 13 || keyCode == 27 || keyCode == 127) {
        var text = document.getElementById(obj).value;
        if (keyCode == 46 && keyCode1 == 0) {
            if (text.toString().indexOf(".") != -1) {
                return false;
            }
        }
        if (keyCode == 46) {
            if (text.toString().indexOf(".") != -1) {
                return false;
            }
        }

        //        if (!/^\d{0,10}(?:\.\d{0,2})?$/.test(text)) {
        //            return false;
        //        } else {
        //        }
        var splitText = text.split('.');
        if (splitText[0].length >= beforeLength) {
            if (keyCode == 46 && text.toString().indexOf(".") == -1) {
                return true;
            } else if (text.toString().indexOf(".") != -1) {
                return true;
            }
            return false;
        }
        //        if (splitText.length > 1 && splitText[1].length == afterLength) {
        //            return false;
        //        }
    }
    else {
        return GetDefault(event);
    }
    return true;
}

function GetDefault(event) {
    var keyCode = event.keyCode;
    if (keyCode == 0)
        keyCode = event.which;

    if (keyCode == 8 || keyCode == 9 || keyCode == 35 || keyCode == 36 || keyCode == 37 || keyCode == 38 || keyCode == 39 || keyCode == 40 || keyCode == 46 || keyCode == 118) {
        return true;
    }
    return false;
}

答案 5 :(得分:0)

如果您正在尝试提醒用户(或其他高级内容),这就是您需要计数的原因,那么您需要添加长度:

$('.txt').keyup(function() {
    var ele = $(this).val();
    var i = ele.indexOf('.');
    if (i > -1) {
        var c = ele.match(/\./g).length);
        // ...
    }
});

如果您只是想删除这些点,那么您可以使用:

$('.txt').keyup(function() {
    $(this).val($(this).val().replace('.', ''));
});

答案 6 :(得分:0)

我找到了自己的方式......

var count = 0;
$('.txt').blur(function () 
{
   var t = $(this).val();
   if (t.indexOf('.') >= 0) 
   {
      var j = t.split('.');
      count = j.length - 1;                    
   }
   else 
   {
      count = -1;
   }
}