s.replace(/&/g,"&")//替换字符串s中的&为&
replace(/  </g,"&lt;")//替换字符串中的<为&lt;
replace(/>/g,"&gt;")//替换字符串中的>为&gt;
replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1");  匹配 \ . * [ ] ( ) $ ^ 字符,$1是对匹配的字符的引用。

解决方案 »

  1.   

    s.replace(/&/g,"&amp;")//替换字符串s中的&为&amp; 
    replace(/   </g,"&lt;")//替换字符串中的 <为&lt; 
    replace(/>/g,"&gt;")//替换字符串中的>为&gt; 
    replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1");  匹配 \ . * [ ] ( ) $ ^ 字符,$1是对匹配的字符的引用。 
      

  2.   


    replace(/&/g,"&amp;") // 将 & 替换为 &amp;
    replace(/</g,"&lt;") // 将 < 替换为 &lt;
    replace(/>/g,"&gt;") // 将 > 替换为 &gt;
    replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1") // 将 \ . * [ ] ( ) $ ^ 这些字符转义,即前面加上 \ 
    即 \ 变成 \\ 
    即 . 变成 \. 
    即 * 变成 \* 
    即 [ 变成 \[ 
    即 ] 变成 \] 
    即 ( 变成 \( 
    即 ) 变成 \)
    即 $ 变成 \$
    即 ^ 变成 \^即一个字符会被替换为 2 个字符
    由于 JS 字符 \ 会被转义为 \\所以你在字符串中的 \ 将是 \\
    所以你在字符串中的 \\ 将是 \\\\
    所以你在字符串中的 \. 将是 \\.
    所以你在字符串中的 \* 将是 \\*
      

  3.   

    s.replace(/&/g,"&amp;").replace(/  </g,"&lt;").replace(/>/g,"&gt;").replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1");  
    这个如果替换的顺序
    replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1");  匹配 \ . * [ ] ( ) $ ^ 字符,$1是对匹配的字符的引用
    replace(/>/g,"&gt;") // 将 > 替换为 &gt; 
    replace(/</g,"&lt;") // 将  < 替换为 &lt; 
    replace(/&/g,"&amp;") // 将 & 替换为 &amp; 以上就是替换顺序与解析
      

  4.   

    下面这个 字符串替换的正则表达式   
    return s.replace(/\\([\\\.\*\[\]\(\)\$\^])/g,"$1").replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&amp;/g,"&");是否和
    s.replace(/&/g,"&amp;").replace(/  </g,"&lt;").replace(/>/g,"&gt;").replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1");  的过程是相反的
      

  5.   

    如果一个字符串经过
    s.replace(/&/g,"&amp;").replace(/   </g,"&lt;").replace(/>/g,"&gt;").replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1");替换然后在经过
    s.replace(/\\([\\\.\*\[\]\(\)\$\^])/g,"$1").replace(/&gt;/g,">").replace(/&lt;/g," <").replace(/&amp;/g,"&"); 能还原吗?