我的正则表达式应该找到并删除所有以foo-
开头的单词。正则表达式适用于在线正则表达式http://regexr.com/3gafi但在我的javascript中失败。
出了什么问题?
$('[class*="foo-"]').each(function(index, ele) {
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 :(得分:1)
(\bfoo-.*?(?= |$)
有效。你要确保它只删除以foo开头的单词而不删除任何其他单词。前瞻有助于此。
$('[class*="foo-"]').each(function(index, ele) {
ele.className = ele.className.replace(/(\bfoo-.*?(?= |$))/g, '');
console.log(ele.className);
});
&#13;
<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>
&#13;
我以为你想保留img-responsive
。如果没有,请删除前瞻,并将非贪婪的匹配转换为贪婪的匹配(使用*
)。
答案 1 :(得分:0)
$('[class*="foo-"]').each(function(index, ele) {
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>
希望它有所帮助。
答案 2 :(得分:0)
示例中的正则表达式不适用于替换。请尝试使用以下内容 - /(foo-[^ "]+ ?)/g