如何用分割替换文本(_)

时间:2016-11-16 15:21:48

标签: javascript jquery

我知道这段代码:

str1 = str1.replace(/_A/g, '<span>A</span>');

但是要替换很多不同的单词太糟糕了。

所以,我有一句话,信后面有(_)。例如_A _B _C 那么,有一种简单的方法可以改变它吗?

例如,_A已替换为<span>A</span>

2 个答案:

答案 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

&#13;
&#13;
var str = '_A _B _C';
console.log(str.replace(/_(\w+)/g, '<span>$1</span>')) 
&#13;
&#13;
&#13;

更新:要匹配_A/B_A#B等字符串,您需要将character class与这些特殊符号一起使用。

str1 = str1.replace(/_([\w\/#]+)/g, '<span>$1</span>'); // use captured value within the replace pattern

&#13;
&#13;
var str = '_A _B _C _A/B  _A#B';
console.log(str.replace(/_([\w\/#]+)/g, '<span>$1</span>'))
&#13;
&#13;
&#13;

仅供参考: \w还包括_,如果您想避免使用[^\W_],请使用否定字符类private DataTable PopulateDropdown(string connectionString, DataTable datatable, string query)