字符串替换为复制文本的正则表达式

时间:2017-11-01 06:21:41

标签: javascript jquery

在将文字从word文件复制到文本编辑器时,我得到的是html代码,如

<p><br></p>
<p> <br></p>
<p>  <br></p>
<p>    <br></p>

我想用上面的空文本替换上面的代码,

var updated = copyieddata.replace('<p><br></p>', '');
updated = updated.replace('<p> <br></p>', '');
updated = updated.replace('<p>  <br></p>', '');
updated = updated.replace('<p>   <br></p>', '');

如何使用Regex实现上述功能以避免重复。

2 个答案:

答案 0 :(得分:2)

pedram的回答可能是达到你想要的最简单方法。

但是,如果您只想删除<p> <br></p>标记并保持所有其他标记完整,那么您需要一个正则表达式来获取字符串的所有部分:

  • <p>开始,以</p>
  • 结束
  • 之间只有<br>空白

您需要的正则表达式如下所示:/<p>(\s|<br>)*<\/p>/g

此表达式查找以<p>开头,零或更多出现空格(\s)或<br>标记的子字符串,以及以</p>结尾。

最后的/g确保如果字符串中出现多次模式,则匹配每个模式。省略/g只匹配字符串中第一个出现的模式。

所以,你的代码看起来像这样:

var pattern = /<p>(\s|<br>)*<\/p>/g;
var updated = copyieddata.replace(pattern, '');

答案 1 :(得分:1)

最简单的方法是将html转换为text(它会删除所有其他html标记,并获得干净的文字)但您也可以使用此主题来了解格式{{1文本。

Jquery Remove MS word format from text area

Clean Microsoft Word Pasted Text using JavaScript

&#13;
&#13;
ms word
&#13;
var text = $('#stack');
text.html(text.text());
console.log(text.html());
&#13;
&#13;
&#13;

或者您使用此替换所有<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="stack"> some text <p><br></p> <p> <br></p> <p> <br></p> <p> <br></p> some text </div><br>代码。

&#13;
&#13;
<p>
&#13;
$("#stack").html(
  $("#stack").html()
  .replace(/\<br\>/g, "\n")
  .replace(/\<br \/\>/g, "\n")
  .replace(/\<p>/g, "\n")
  .replace(/\<\/p>/g, "\n")
);
&#13;
&#13;
&#13;

而不是<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="stack"> some text <p><br></p> <p> <br></p> <p> <br></p> <p> <br></p> some text </div>,您可以使用"\n"

之类的内容