新女主穿越到梦幻西游:求正则表达式

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 07:38:28
求正则表达式,在字符中找出:

符合 行开始+任意字符+"click"+任意多个空格+"()"+任意字符+行结束

但是不符合 行开始+任意字符+"on_click"+任意多个空格+"()"+任意字符+行结束

并且要把 "click"+任意多个空格+"()" 作为捕获组。

麻烦回答时测试一下:
<html>
<body>
<input type="textarea" name="in_1">
<input type="textarea" name="in_2">
<input type="button" name="bt_1" onclick="javascript:on_bt1Click();">
</body>
</html>
<script language="javascript">
document.all.in_1.value="asdgon_click()asd\nasdfclick()asdf\nasdfclick ()\n";
function on_bt1Click() {
var in1 = document.all.in_1.value;
var in2 = in1.repalce(/你的正则表达式/g,"on_click()");
document.all.in_2.value = in2;
}
</script>

如果所有click()都被替换而on_click()没有被替换,说明正确。
给出答案的时候麻烦给我解释一下,另外
(?!on_)approve\s*\(\)
为什么不行也请解释一下。

/(?:on_|)click *\(\)/g

只改了你一点点东西,应该不难理解吧。你那样写过不了的原因我认为是因为负向预查不消耗字符数,具体点说就是,虽然on_click的时候不发生替换,但是接下来进行的是n_click,这样一来,就发生替换了。

\s等价于[\f\n\r\t\v],这个范围有点大了,像你描述的情况,我觉得一个空格符足够了

行开始+任意字符+"on_click"+任意多个空格+"()"+任意字符+行结束
/.*?[^{on\_}]click\s*\(\)/

看看

zxc