JavaScript / jQuery:在特殊字符和关闭html标记之后插入空格

时间:2012-07-08 10:18:45

标签: javascript regex replace

我有以下字符串:

<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>

上面有两部分:

  1. 在每个特殊字符后插入空格。所以在上面的例子中,它可能是!而不是问号!或者&amp;或(或)或%等我需要在这些特殊字符之后插入空格。
  2. 删除所有打开的html标记&amp;用空格替换关闭html标签。
  3. 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>,等?

2 个答案:

答案 0 :(得分:0)

匹配:

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

并替换为

$1

答案 1 :(得分:0)

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

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

对于打开代码问题,您可以使用:

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

基本上,[abcdef]表示它是a,b,c,d,e,f中的任何一个的占位符。类似于%?。在类(方括号)中放置^意味着它是其他字符的占位符,而不是^后面的字符。因此<[^/]不接受</字符串。