日期:2014-05-16  浏览次数:20457 次

js 正则表达式如何将js函数中的标签换位 标签的值
从数据库中提取一些表达式 如 parseInt(xx) xx.toUpperCase() xx是表单元素标签
我想要通过这些表达式和表达元素算出想要的值。js代码是这样
//formName表单的名字 evExp表达式
function translateExp(formName, evExp) {
var formObj = document.forms[formName];
var replaceValue = null, elem = null;
var regexp = null;
for (var i = 0, n = formObj.elements.length; i < n; i++) {
elem = formObj.elements[i];
if (elem.name && elem.name != undefined && elem.name != "") {
replaceValue = "$('" + elem.name + "').value";
regexp = new RegExp(elem.name, "gi");
evExp = evExp.replace(regexp, replaceValue);
}
}
return evExp;
}

现在的情况是这样,表达式是parseInt(wbys)+ parseInt(ys) 表单中也有名字为wbys和ys的输入框。循环表单元素wbys之后 变成 parseInt($(wbys).value)+ parseInt(ys) 。但是循环ys的时候会变成 parseInt($(wb$(ys).value).value)+ parseInt($(ys).value)。正确的解析应为parseInt($(wbys).value)+ parseInt($(ys).value)。起初我打算匹配(wbys) 。regexp = new RegExp("("+elem.name+")", "gi");但是会遇到类似wbys.toUpperCase() 解析后$(wbys).value.toUpperCase() 或者weys=zt的表达式解析后变成
$(wbys).value=$(zt).value

这个表达式应该怎么写 求解

------解决方案--------------------
regexp = new RegExp("\b("+elem.name+")\b", "gi");