2017-07-08 57 views
-1

我的正則表達式應找到並刪除以foo-開頭的所有單詞。正則表達式在在線正則表達式中工作http://regexr.com/3gafi,但在我的JavaScript失敗。正則表達式匹配在線測試,但不是在JavaScript執行?

怎麼回事?

$('[class*="foo-"]').each(function(index, ele) { 
 

 
\t ele.className = ele.className.replace(/(foo-.*(|\0))/g, ''); 
 
    console.log(ele.className); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="foo-abc img-responsive"></div> 
 

 
<div class="foo-abc"></div> 
 

 
<div class=" foo-abc"></div> 
 

 
<div class=" foo-abc "></div>

回答

1

(\bfoo-.*?(?= |$)工作。您需要確保它只刪除以foo開頭的文字,而不是其他文字。向前看有助於此。

$('[class*="foo-"]').each(function(index, ele) { 
 

 
\t ele.className = ele.className.replace(/(\bfoo-.*?(?= |$))/g, ''); 
 
    console.log(ele.className); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="foo-abc img-responsive"></div> 
 

 
<div class="foo-abc"></div> 
 

 
<div class=" foo-abc"></div> 
 

 
<div class=" foo-abc "></div>

我以爲你要保留img-responsive。如果不是,則刪除前視圖,並將非貪婪匹配轉換爲貪婪匹配(*)。

0

$('[class*="foo-"]').each(function(index, ele) { 
 

 
\t ele.className = ele.className.replace(/(foo-.*(|\0)?)/g, ''); 
 
    console.log(ele.className); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="foo-abc img-responsive"></div> 
 

 
<div class="foo-abc"></div> 
 

 
<div class=" foo-abc"></div> 
 

 
<div class=" foo-abc "></div>

希望它能幫助。

0

您示例中的正則表達式不適用於替換。嘗試使用以下內容 - /(foo-[^ "]+ ?)/g

相關問題