正则表达式-选择逆

时间:2019-05-15 10:05:23

标签: javascript regex

我在选择与先前选择相反的内容时遇到了困难

字符串:

{
  "suggest": {
    "my_suggestion": {
      "prefix": "FR0011597335",
      "completion": {
        "field": "suggest"
      }
    }
  }
}

我设法通过以下方式选择评论:

<!-- Button --><div><button></div><!-- Input --><input type="text">

现在,我想选择除注释之外的所有内容。所需的输出

/<!--[\s\w]*-->/

我的问题是,正则表达式搜索字符串是什么,以便选择前面提到的输出?

3 个答案:

答案 0 :(得分:2)

我相信与Preg_SPLIT_NO_EMPTY的php preg_split等效的js就像这样:

yourstring.split(/<!--[\s\w]*-->/g).filter(n => n)

jsfiddle:https://jsfiddle.net/75rLaeoj/

使用dom解析器可能要复杂一些,因为您要将一个或多个标签组合在一起。

答案 1 :(得分:1)

一种简单的求逆方法是替换正则表达式选择:

let html = '<!-- Button --><div><button></div><!-- Input --><input type="text">'

let noComments = html.replace(/<!--[\s\w]*-->/g,"") 

console.log(noComments) //<div><button></div><input type="text">

答案 2 :(得分:-1)

我发现,以前使用Regex仅选择第一个实例时遇到了问题,但我发现缺少全局标记/.../g

求逆的答案是/<[^!]*?>.*?>/g

var s = '<!-- Button --><div><button></div><!-- Input --><input type="text">'
console.log(s.match(/<[^!]*?>/g))

参考: https://javascript.info/regexp-greedy-and-lazy