0

我有以下字符串:

<h1 class="title">This is some heading?</h1><h2 class="desc">Here is the description for it.</h2>

想让它看起来像:

<h1 class="title">This is some heading? </h1> <h2 class="desc">Here is the description for it.</h2>

上面有2个部分:

  1. 在每个特殊字符后插入空格。所以在上面的例子中,它可能不是问号,而是!或 & 或 ( 或 ) 或 % 等,我需要在这些特殊字符之后插入空格。
  2. 删除所有打开的 html 标记并用空格替换关闭的 html 标记。

对于 1,我试过这个:

str = str.replace(/\?/g,'? ');  

以上是否在 ? 之后插入空格?但它非常僵硬。我不能对所有特殊字符应用相同的规则。那么该怎么做呢?

对于2,我试过这个:

//To entirely remove all opening html tags    
str = str.replace(/<.*?>/g, '');

//To replace closing tag with space    
str = str.replace(/<\/.*?>/g, ' ');

上面代码的问题是后面的部分运行良好。第一部分,即删除所有打开的 html 标记的代码也会影响关闭的 html 标记,这是不可取的。那么如何修改上面的代码,以便删除诸如<h1>, <div>,etc. 之类的开始标签呢?

4

2 回答 2

0

匹配 :

\s*(?<ws>[<>])\s*

并替换为

$1
于 2012-07-08T10:30:38.723 回答
0

对于第一个问题,您可以使用:

s.replace(/([?%])/g, '$1 ') //you could put more characters within `[..]`

对于打开标签问题,您可以使用:

str.replace(/<[^/].*?>/g, '')

基本上,[abcdef]意味着它是任何 a、b、c、d、e、f 的占位符。%和类似?。将 a^放在类中(方括号)意味着它是除后面的字符之外的任何字符的占位^。所以<[^/]不会接受</字符串。

于 2012-07-08T10:35:35.947 回答