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

来源:7-23 编程练习

cin_cout

2017-08-07 18:54

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

  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 

为什么???


写回答 关注

2回答

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

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

    cin_co...

    非常感谢!

    2017-09-03 10:19:09

    共 1 条回复 >

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

    parseInt("汉字")

    cin_co...

    match()不是把数字截取出来吗?为什么还会有汉字?

    2017-08-08 19:50:01

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468190 学习 · 21891 问题

查看课程

相似问题