替换中的多个链

时间:2018-05-22 09:47:43

标签: jquery

我如何做多个链替换称呼Ms,Cik,Mr,Encik,Puan,Mdm,Mrs - >总共7个文本

我目前只有2个文字

$("h1").each(function() {
   $(this).html($(this).html().replace('Ms', '').replace('Cik', ''));
});

我的HTML示例如下。我需要隐藏上面的称呼

<h1>Dr Phillips</h1>
<h1>Ms Peter</h1>
<h1>Mr Robert</h1>
<h1>Prof Thomas</h1>
<h1>Mdm Khoo</h1>

JSFiddle链接:https://jsfiddle.net/mxm2oL0a/3/

2 个答案:

答案 0 :(得分:1)

您可以使用包含要替换的所有值的正则表达式,如下所示:

$("h1").text(function(i, t) {
  return t.replace(/^(Ms|Cik|Mr|Encik|Puan|Mdm|Mrs)(?:\W)/, '');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>Dr Phillips</h1>
<h1>Ms Peter</h1>
<h1>Mr Robert</h1>
<h1>Prof Thomas</h1>
<h1>Mdm Khoo</h1>

请注意,^字符定义我们只想在字符串的开头找到文本。 (?:\W)指定我们只想将组捕获为整个单词。根据您的示例,这不是绝对必要的,但更强大。

还要注意使用提供给text()的处理函数,否定了显式循环的需要。

答案 1 :(得分:1)

除了Rory McCrossan的解决方案外,

请注意,如果您只想获得第二个字,您可以简单地执行此操作:

$("h1").each(function() {
  $(this).html($(this).html().split(" ")[1]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>Dr Phillips</h1>
<h1>Ms Peter</h1>
<h1>Mr Robert</h1>
<h1>Prof Thomas</h1>
<h1>Mdm Khoo</h1>