//Try it. function opt(str) { //var reg = /( <input(?=[^>]*value=).*?value=(['" ]?[^'"\s]+['" ]))/gi var reg=/<input[^>]+value\s*=\s*("|')([^>]*)\1[^>]*\/>/ig; var result =str.replace(reg ,"$2"); alert(result); }
<script type="text/javascript"> <!-- var str = '<input onclick=aaa(); name=ABC value="文本框值">'; var reg = /<input[^>]*value=(\'|\")([^\'\"]+)\1[^>]*>/i; alert(str.match(reg)[2])//--> </script>
更正一下上面的代码 <html> <body><textarea id="content" rows="10" cols="100"> <INPUT type="text" name="cCode" onclick=dddd(); value="ddddddd" > <input onclick=aaa(); name=ABC value=文本框值 > </textarea> <script> function opt() { var str = document.getElementById("content").value; var reg = /( <input(?=[^>]*value=).*?value=(['" ]?[^'"\s]+['" ]))/gi var result =str.replace(reg ,"$2"); alert(result); } </script> </body> </html>
用dom是不好用的,我的代码很特殊,只能用正则。通俗一点说,我原先的代码 : <input onclick=aaa(); name=ABC value=文本框值 >
我想把它变成 : 文本框值
也就是只保留input的value。
红色部分是固定的吗?
这种方式真的行不通?
有什么特殊的?能否透露下?/<input[\s\S]*?value\s*=\s*['"]?([^'"\s>]*)\/?>/img试试这个正则
document.getElementsByName("ABC")只能取到 1,3,5 的 input 。很奇怪了。
结果是
value="ddddddd" >
value=文本框值 >
我想要的结果是:
ddddddd
文本框值
=================================================== <textarea id="content" rows="10" cols="100">
<INPUT type="text" name="cCode" onclick=dddd(); value="ddddddd" >
<input onclick=aaa(); name=ABC value=文本框值 >
</textarea>
<script>
function opt()
{
var reg = /(<input(?=[^>]*value=).*?value=(['" ]?[^'"\s]+['" ]))/gi
var result =str.replace(reg ,"$2");
alert(result);
}
</script>
//Try it.
function opt(str)
{
//var reg = /( <input(?=[^>]*value=).*?value=(['" ]?[^'"\s]+['" ]))/gi
var reg=/<input[^>]+value\s*=\s*("|')([^>]*)\1[^>]*\/>/ig;
var result =str.replace(reg ,"$2");
alert(result);
}
<script type="text/javascript">
<!--
var str = '<input onclick=aaa(); name=ABC value="文本框值">';
var reg = /<input[^>]*value=(\'|\")([^\'\"]+)\1[^>]*>/i; alert(str.match(reg)[2])//-->
</script>
<html>
<body><textarea id="content" rows="10" cols="100">
<INPUT type="text" name="cCode" onclick=dddd(); value="ddddddd" >
<input onclick=aaa(); name=ABC value=文本框值 >
</textarea>
<script>
function opt()
{
var str = document.getElementById("content").value;
var reg = /( <input(?=[^>]*value=).*?value=(['" ]?[^'"\s]+['" ]))/gi
var result =str.replace(reg ,"$2");
alert(result);
}
</script>
</body>
</html>
s="<input onclick=aaa(); name=ABC value=文本框值 > "
alert(s.replace(/<\/?[^>]+value\=(.+)>/gi,"$1"))
(理上网来) 的 ,如果是 s="<input onclick=aaa(); name=ABC value='文本框值' > "
就会输出: '文本框值' ,带单引号了。双引号也是如此。
s="<input onclick=aaa(); name=ABC value=文本框值 > "
alert(s.replace(/<input\/?[^>]+value\=(.+)>/gi,"$1"))理上网来,继续问一下,这个正则如何不匹配 <input type="hidden" value="xx" > ,也就是不匹配隐藏域呢?
alert(s.replace(/<input\s\/?[^>]+(value\=('|"))(.+)('|")>/gi, '$3'))
这种方式真的行不通?
(浴火凤凰) 果然不通!我的很奇怪,只匹配了1,3,5的input。所以逼不得已才用正则
18楼 的。多行的就不好用了。
试试 textarea中的值。 var str = document.getElementById("content").value;<textarea id="content" rows="10" cols="100">
<INPUT type="text" name="cCode" onclick=dddd(); value="ddddddd" >
<input onclick=aaa(); name=ABC value=文本框值 > <select>
<option value=asdasd></option>
</select>
<div id=iiiiiii ></div>
</textarea>
加分!
例子: <input type=hidden > ,就直接把这个标签删除掉。 变为空
/<input\s+(?![^<>]*type=['"]?hidden["']?)[^<>]*(?:type=['"]?text['"]?)?[^<>]*value=["']?([^'"\s]*)['"]?[^<>]*>/ig
//按照C#的改的 可以试一下
/*
<textarea id="content" rows="10" cols="100">
<INPUT type="text" name="cCode" onclick=dddd(); value="ddddddd" >
<input onclick=aaa(); name=ABC value=文本框值 >
<input type="hidden" value="xx" >
<select>
<option value=asdasd> </option>
</select>
<div id=iiiiiii > </div>
</textarea>
*/
以上只取到ddddddd和文本框值,不知道符合不符合
<INPUT type="text" name="cCode" onclick=dddd(); value="ddddddd" > 这个反而替掉了。
用document.getElementsByTagName 的方法解决了!
详见另一贴:
http://topic.csdn.net/u/20090819/09/e2fa8df1-3f06-458f-a081-4e84dc66ce42.html