首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

正则表达式分组解决办法

2012-04-27 
正则表达式分组有如下类似的字符串($目标值+$权重-0.2)*100/20+10能通过正则表达式将其分成如下数组目标

正则表达式分组
有如下类似的字符串 ($目标值+$权重-0.2)*100/20+10 能通过正则表达式将其分成如下数组
  "目标值","+","权重","-","0.2",")","*","100","/","20","+","10"
格式吗?
有个思路
1、先去掉$符号 生成 (目标值+权重-0.2)*100/20+10
2、匹配字符串当遇到(、)、+、-、*、\、汉字、数字时在其后面加“ ,” 生成:(,目标值,+,权重,-,0.2,),*,100,/,20,+,10,
3、去掉末尾的“,”,再用split(',')分组

[解决办法]
var reg=/(?:[\u4e00-\u9fa5]+|\d\(.\d+)?|[()+\-*\/])/;
var result=yourhtml.replace('$','').split(reg);
[解决办法]
var reg=/(?:[\u4e00-\u9fa5]+|\d+\(.\d+)?|[()+\-*\/])/;
[解决办法]
不懂正则,苦恼啊,来个暴力点的方法:

JScript code
var s = '($目标值+$权重-0.2)*100/20+10';s = s.replace(/\$/g, ''); //去掉$符号var ar = s.split('');function in_array(k, arr) {    for (var i = 0; i < arr.length; i ++) if (arr[i].toString() == k) return true;    return false;}var sep = ['(', ')', '+', '-', '*', '/'];var result = [], flag = false; //flag变量指示上一个字符是否为分隔符for (var i = 0; i < ar.length; i ++) {    if (in_array(ar[i], sep)) {        result.push(ar[i]);        flag = true;    }    else {        if (flag) result.push(ar[i]);        else result.length == 0 ? result.push(ar[i]) : result[result.length - 1] += ar[i].toString();        flag = false;    }}alert(result); 

热点排行