问答详情
源自:7-23 编程练习

正则表达式,match()与parseInt()一起用带来的问题

 //成绩是一长窜的字符串不好处理,找规律后分割放到数组里更好操作哦

  var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";


  var reg1 = new RegExp('(\\d{0,2}|100)','\g');

  

  var scoreArr = scoreStr.match(reg1);

  

  var sum = 0;

  

  for(var i = 0; i < scoreArr.length; i++){

      document.write(scoreArr[i] + " ");

      /*var x = parseInt(scoreArr[i]); //error

      document.write(x);*/

  }

以上代码结果为:87 81 97 76 74 94 90 76 64 76

如果把注释去掉,结果变成了:

NaN NaN NaN87 87 NaN NaN NaN NaN81 81 NaN NaN NaN NaN97 97 NaN NaN NaN NaN76 76 NaN NaN NaN NaN74 74 NaN NaN NaN NaN94 94 NaN NaN NaN NaN90 90 NaN NaN NaN NaN76 76 NaN NaN NaN NaN64 64 NaN NaN NaN NaN76 76 

为什么???


提问者:cin_cout 2017-08-07 18:54

个回答

  • 点赞狂魔
    2017-08-30 10:43:27
    已采纳

    你的正则表达式'(\\d{0,2}|100)','\g')使得所有的字符都被当做数字筛选了出来,只不过字符被当做数字时存为了NaN,用显示字符串的方法时不显示出来,而用parseInt()方法时就有显示,可以用console.log()在控制台直观的看一下,另外|100这个东西在正则表达式没用,我的正则表达式写法:/\d+/g  简单好用

  • 慕粉1472960437
    2017-08-07 22:45:26

    parseInt("汉字")