为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式,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 

为什么???


正在回答

2 回答

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

1 回复 有任何疑惑可以回复我~
#1

cin_cout 提问者

非常感谢!
2017-09-03 回复 有任何疑惑可以回复我~

parseInt("汉字")

0 回复 有任何疑惑可以回复我~
#1

cin_cout 提问者

match()不是把数字截取出来吗?为什么还会有汉字?
2017-08-08 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信