jQuery-计算字段中字母和数字的数量

jQuery-计算字段中字母和数字的数量,jquery,regex,Jquery,Regex,我正在尝试使用jQuery获取字段中的字母和数字数量 目前我正在使用此代码,但它不起作用: $(“#sPassword1”)。在('input',function()上{ var fieldValue=$(this.val(); 变量计数=fieldValue.length; var countL=fieldValue.match(/([A-z])/g).length; var countN=fieldValue.match(/([0-9])/g).length; 控制台日志(计数); 控制台

我正在尝试使用jQuery获取字段中的字母和数字数量

目前我正在使用此代码,但它不起作用:

$(“#sPassword1”)。在('input',function()上{
var fieldValue=$(this.val();
变量计数=fieldValue.length;
var countL=fieldValue.match(/([A-z])/g).length;
var countN=fieldValue.match(/([0-9])/g).length;
控制台日志(计数);
控制台日志(countL);
console.log(countN);
});

这对我来说很有效,似乎唯一缺少的是处理没有匹配项的情况-匹配项不会返回空数组,而是返回空值。请参见RegExp行:

$(“#sPassword1”)。在('input',function()上{
var fieldValue=$(this.val();
变量计数=fieldValue.length;
var countL=(fieldValue.match(/([A-z])/g)| |[])长度;
var countN=(fieldValue.match(/([0-9])/g)| |[])长度;
log({count,countL,countN,fieldValue});
});

这对我来说很有效,似乎唯一缺少的是处理没有匹配项的情况-匹配项不会返回空数组,而是返回空值。请参见RegExp行:

$(“#sPassword1”)。在('input',function()上{
var fieldValue=$(this.val();
变量计数=fieldValue.length;
var countL=(fieldValue.match(/([A-z])/g)| |[])长度;
var countN=(fieldValue.match(/([0-9])/g)| |[])长度;
log({count,countL,countN,fieldValue});
});

您忘记控制匹配函数return null

$( "#sPassword1" ).on('input', function() {
      var fieldValue = $(this).val();
      var count = fieldValue.length;

      var match1= fieldValue.match(/([A-z])/g);
      var match2= fieldValue.match(/([0-9])/g);
      var countL = 0;
      var countN = 0;
      if ( match1 != undefined ){
        countL = match1.length;
      }
     if ( match2 != undefined ){
        countN =  match2.length;
      }

      console.log(countL + " " +countN );
    });

您忘记控制match函数返回null

$( "#sPassword1" ).on('input', function() {
      var fieldValue = $(this).val();
      var count = fieldValue.length;

      var match1= fieldValue.match(/([A-z])/g);
      var match2= fieldValue.match(/([0-9])/g);
      var countL = 0;
      var countN = 0;
      if ( match1 != undefined ){
        countL = match1.length;
      }
     if ( match2 != undefined ){
        countN =  match2.length;
      }

      console.log(countL + " " +countN );
    });
就这样

var countL=0,
countN=0;
$(“#sPassword1”)。on('input',function(){
var fieldValue=$(this.val();
如果(/([A-z])/g.test(fieldValue))countL+=1;
如果(/([0-9])/g.test(fieldValue))countN+=1;
控制台日志(countL);
console.log(countN);
});

就这样

var countL=0,
countN=0;
$(“#sPassword1”)。on('input',function(){
var fieldValue=$(this.val();
如果(/([A-z])/g.test(fieldValue))countL+=1;
如果(/([0-9])/g.test(fieldValue))countN+=1;
控制台日志(countL);
console.log(countN);
});


我猜您是在尝试获取更改事件的计数,所以请尝试('change',function(){
这部分工作得很好。我的问题是:var countL=fieldValue.match(/([A-z])/g).length;var countN=fieldValue.match(/([0-9])/g).length;我将您的代码转换为一个工作片段-除非您没有字母/数字,否则它可以正常工作,所以您只需要处理该场景。在将来详细说明“它不工作”可能会有好处(即显示您遇到的错误以及在什么场景中),我想您正在尝试计数更改事件,所以请尝试
$(“#sPassword1”)。on('change',function(){
那部分工作得很好。我的问题是:var countL=fieldValue.match(/([A-z])/g.length;和var countN=fieldValue.match(/([0-9])/g.length;我把你的代码转换成了一个工作片段——除非你没有字母/数字,否则它工作得很好,所以你只需要处理那个场景。详细说明“它不工作”将来可能会有好处(即显示您在什么情况下会出现什么错误)