<center>
<textarea rows="30" name="S1" cols="111"></textarea></p>
<script>
function qwe()
{
var str=S1.value;
var r=str.replace(/param1/,"20");
alert(r);
}
</script>
<p><input type="button" value="按钮" name="B3" onclick="qwe()"></p>
</center>

解决方案 »

  1.   

    拜托不要把我想得这么弱智好不好?
    我的匹配模式需要两端都不是[A-Za-z0-9_](否则会把param111这样的也替换掉了),这个我也能做到,现在的问题是,我要进行替换,但是用模式匹配的结果是包括前后限定符的,比如把 param1+ 替换成 20了 我需要的把+号留下。 这个我也能办到用$1这样的方法能办到。但是还存在情况就是 可能 +param1+ 这样的情况 param1 就应该是$2了。
    我觉得是我对正则表达式理解的不透彻造成的,是思路上根本有错误,清高手指点
      

  2.   

    写一个REPLACEALL函数。这个函数简单点就是replace函数的多重判断替换版本。
      

  3.   

    <SCRIPT LANGUAGE="JavaScript">
    var str = "param1+param0+param11+param111";
    var ptr = /(^|\+)(param1)(\+|$)/g;
    str = str.replace(ptr,"$120$3");
    alert(str)
    </SCRIPT>
      

  4.   

    比较好的方法:可以使用 \b (表示词边界)。
    此外:x(?=y) 
      
     Matches 'x' only if 'x' is followed by 'y'. For example, /Jack(?=Sprat)/ matches 'Jack' only if it is followed by 'Sprat'. /Jack(?=Sprat|Frost)/matches 'Jack' only if it is followed by 'Sprat' or 'Frost'. However, neither 'Sprat' nor 'Frost' is part of the match results.   
     
    x(?!y) 
      
     Matches 'x' only if 'x' is not followed by 'y'. For example, /\d+(?!\.)/ matches a number only if it is not followed by a decimal point.不过 javascript 的正则表达式有一点缺陷,就是只有 (?=X) 这个正向,没有 (?<=X)
    这个反向(java的regex有)。