Javascript替换功能跳过匹配

时间:2012-04-13 22:01:31

标签: javascript replace

<map>中的第二个'senzajs'没有被替换,但我希望它......

的Javascript

 <script  type="text/javascript">
  $("document").ready(function(){
     $('body').html($('body').html().replace('senzajs', 'js'));
   });
  </script>

HTML

  <div class="objectdiv">
   <a href="freegames/Classic/svgsenzajs/start.php/">
    <object class="svg" type="image/svg+xml"  data="svg/question0optimize1.svg" >
         <img src="png/question0optimize1.png" type="image/png" usemap="#mapping"/>    
     </object>   
   </a>
   <map name="mapping">
        <area shape="rect" coords="0,0,1000,1000" 
         href="freegames/Classic/pngsenzajs/start.php/" />
    </map>
 </div>

为什么会这样?

4 个答案:

答案 0 :(得分:4)

使用.replace(/senzajs/g, 'js')。带有g标志的正则表达式将匹配所有出现而不是仅匹配第一个出现。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace

答案 1 :(得分:1)

你需要在这里使用正则表达式,否则只替换找到的第一个字符串。 / senzajs / g将匹配所有找到的,具有完全相同的情况。添加i忽略套管/ senzajs / gi,所以即使SENZJAS也会被替换。

<script  type="text/javascript">
  $("document").ready(function(){
     $('body').html($('body').html().replace(/senzajs/g, 'js'));
   });
  </script>

答案 2 :(得分:1)

你使用它的替换函数只替换它找到的第一个实例。使用正则表达式替换所有实例:

var myNewString = myOldString.replace(/username/g, visitorName);

(我从http://www.tizag.com/javascriptT/javascript-string-replace.php解除了这个。)

答案 3 :(得分:0)

 <script  type="text/javascript">
  $("document").ready(function(){
     $('body').html($('body').html().replace('/senzajs/gm', 'js'));
   });
  </script>