js 正则表达式如何将js函数中的标签换位 标签的值

qhdyangshuai 2012-03-05 08:01:38
从数据库中提取一些表达式 如 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

这个表达式应该怎么写 求解
...全文
150 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qhdyangshuai 2012-03-20
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script language="javascript">
function tra() {
//alert(exp.value.replace(/\bYS\b/gi, "123"));
alert(exp.value.replace(new RegExp("\\bYS\\b", "gi"), "$(YS)"));
}
</script>
</head>
<body>
<input type="text" id="exp" disabled value="ZYS = PAGENUM + YS + WBYS + YS1 + YS2 " style="width:350px;">
<br><button onclick="tra()">将表达式中的YS字段替换为$(YS)</button>
</body>
</html>
这就是解决方式
q107770540 2012-03-07
  • 打赏
  • 举报
回复
regexp = new RegExp("\b("+elem.name+")\b", "gi");
qhdyangshuai 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 q107770540 的回复:]
regexp = new RegExp("\b("+elem.name+")\b", "gi");
[/Quote]
如果表达式是 wbys.toUpperCase() 就不能匹配 也不会替换成 $(wbys).value.toUpperCase()
qhdyangshuai 2012-03-06
  • 打赏
  • 举报
回复
就是 加入解析式是 parseInt(wbys)+ parseInt(ys) 表达元素有个输入框名字为wbys和ys 我现在取得这2个输入框的值 然后计算加和
nnnnyyyy 2012-03-06
  • 打赏
  • 举报
回复
没看明白。你能不能举个梨子。比如:输入什么,想输出什么。
qhdyangshuai 2012-03-06
  • 打赏
  • 举报
回复
求解 谢谢大侠们

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧