我知道这段代码:
str1 = str1.replace(/_A/g, '<span>A</span>');
但是要替换很多不同的单词太糟糕了。
所以,我有一句话,信后面有(_)
。例如_A _B _C
那么,有一种简单的方法可以改变它吗?
例如,_A
已替换为<span>A</span>
答案 0 :(得分:4)
使用修饰符:
str1 = str1.replace(/_(.*)/g, '<span>$1</span>');
你需要小心这一点,因为它会把一切都带到最后。
$(function () {
$("ul li").each(function () {
$(this).html(function () {
return $(this).text().replace(/_(.*)/g, '<span>$1</span>');
});
});
});
li span {background: #eee;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>_A</li>
<li>_B</li>
<li>CD</li>
<li>_E</li>
<li>_FG</li>
</ul>
如果它们混淆了,您可以使用(\w+)
字选择器而不是(.*)
贪婪的比赛。
答案 1 :(得分:4)
在正则表达式中使用\w+
for word match并为全局匹配添加修饰符g
。
str1 = str1.replace(/_(\w+)/g, '<span>$1</span>'); // use captured value within the replace pattern
var str = '_A _B _C';
console.log(str.replace(/_(\w+)/g, '<span>$1</span>'))
&#13;
更新:要匹配_A/B
和_A#B
等字符串,您需要将character class与这些特殊符号一起使用。
str1 = str1.replace(/_([\w\/#]+)/g, '<span>$1</span>'); // use captured value within the replace pattern
var str = '_A _B _C _A/B _A#B';
console.log(str.replace(/_([\w\/#]+)/g, '<span>$1</span>'))
&#13;
仅供参考: \w
还包括_
,如果您想避免使用[^\W_]
,请使用否定字符类private DataTable PopulateDropdown(string connectionString, DataTable datatable, string query)