jquery .replace()-如何替换同一行中的多个字符串?

时间:2019-05-14 16:27:31

标签: javascript

我的名字叫艾哈迈德(Ahmed),我有一个页面,其中包含一个文本区域和一个单击后通过Ajax在文本区域中发送数据的按钮,但是我想在发送之前替换一些字符串,并且这些字符串是 ,{{ 1}},­&  

以及JS代码中的

<

我看过一些站点,但找不到替代两个以上字符串的方法,例如底部的代码

$('#CT').click(function(){
   var textarea=$('#ed_level_2');
   textarea.val(textarea.val().replace(/&/g,"").replace(/</g,"").replace(/>/g,"").replace(/"/g,"").replace(/–/g,"").replace(/—/g,"").replace(/ /g,"").replace(/ /g,"").replace(/ /g,"").replace(/­/g,"").replace(/©/g,"").replace(/™/g,"").replace(/®/g,""));
});

3 个答案:

答案 0 :(得分:1)

您可以使用竖线将多个字符串分开,从而一次替换多个字符串,

$('#CT').click(function(){
   var textarea=$('#ed_level_2');
   textarea.val(textarea.val().replace(/&/g,"").replace(/</g,"").replace(/>/g,"").replace(/"/g,"").replace(/–/g,"").replace(/—/g,"").replace(/ /g,"").replace(/ /g,"").replace(/ /g,"").replace(/­/g,"").replace(/©/g,"").replace(/™/g,"").replace(/®/g,""));
});

可以写为:

$('#CT').click(function(){
   var textarea=$('#ed_level_2');
   textarea.val(textarea.val().replace(/&|<|>|"|–|—| | | |­|©|™|®/g,""));
});

我不确定您访问过哪些网站,但是w3schools提供了许多不同的Javascript字符串函数的示例,包括replace():

https://www.w3schools.com/jsref/jsref_replace.asp

答案 1 :(得分:1)

据我了解,您想一次替换(删除)一次多个。试试这个

textarea.val(textarea.val().replace(/\&(amp|lt|gt|quot|ndash|mdash)\;/gi,"")

更好地建立列表

const myList = ['amp', 'lt', 'gt', 'quot', 'ndash'];
const regex = new RegExp('\&' + myList.join('|') + '\;', 'gi');
textarea.val(textarea.val().replace(regex, ''));

如果您需要替换所有html实体,则只需使用正则表达式

textarea.val(textarea.val().replace(/\&[a-z]+\;/gi, ''));

答案 2 :(得分:0)

这取决于您要解决的问题,是否要替换特定的实体,是否剥离所有html或两者。

$(function() {

  function replaceEntities(badString) {
    return badString.replace(/&|<|&gt|"|–|—| | | |­|©|™|&reg/gi, "");
  };

  function stripHtml(badString) {
    return $($.parseHTML(badString)).text();
  }

  $("form").on("submit", function(e) {
    e.preventDefault();
    var inval = $("#in").val();
    $("#out1").val(replaceEntities(inval));
    $("#out2").val(stripHtml(inval));
  })


})
label {
  display: inline-block;
  margin: 5px;
  padding: 5px;
  border: 1px dotted #ccc;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
  <label>Input
  <textarea id="in" placeholder="try some junk html in here"></textarea>
  </label>
  <label>replaceEntities()
  <textarea id="out1" readonly=readonly></textarea>
  </label>
  <label>stripHTML()
  <textarea id="out2" readonly=readonly></textarea>
  </label>
  <input type="submit" />
</form>