替换保留文字的数字-JavaScript

时间:2018-11-23 17:27:02

标签: javascript

背景

我正在将XML作为我的react-native应用程序的字符串处理。源文本文件以xml格式存储在Web服务器上。 顺便说一句,如果我使用解析后的xml字符串本身会遇到一些困难。

<p><verse-number>1</verse-number> verse1 contents <verse-number>2</verse-number> verse 2 contents <verse-number>3 ...  </p>

当我将此字符串解析为对象时,我在“ p”标签下获得了全部经文的内容。

p: "verse1 contents verse 2 contents ..."

所以我添加了一些标签来分隔每个内容

xml.replace("<verse-number>", "</verse-content><verse-number>").replace("</verse-number>","</verse-number><verse-content>")

此后我得到了这个字符串

<p></verse-content><verse-number>1</verse-number><verse-content> verse1 contents </verse-content><verse-number>2</verse-number><verse-content> verse 2 contents </verse-content><verse-number>3 ...  <verse-content></p>

替换功能会生成一些不必要的标签,例如<p>之后和</p>之前。有些在标签之后和之前。

我需要的

我想从字符串中删除那些不必要的</verse-content>标记(在<li[numbers]>之后)。

来自

...
<p></verse-content>...
<li1></verse-content>some string here...
<li2></verse-content>some string again...
<li3></verse-content>another string here ..
<ul></verse-content>...
...

收件人

...
<p></verse-content>...
<li1>some string here...
<li2>some string again...
<li3>another string here ..
<ul></verse-content>...
...

类似string.replace()

1 个答案:

答案 0 :(得分:1)

HTML和正则表达式不是好朋友。使用解析器,它更简单,更快并且更易于维护。


但是,如果您真的想使用正则表达式,则可以解决您的问题:

html = `
<p></verse-content>...
<li1></verse-content>some string here...
<li2></verse-content>some string again...
<li3></verse-content>another string here ..
<ul></verse-content>...
`;

console.log( html.replace(/(<li\d+>)<\/verse-content>/g, "$1") );

说明:

/                   # regex delimiter
  (<li\d+>)         # group 1, tag liNumber
  </verse-content>  # literally
/g                  # regex delimiter, global flag