【问题标题】:Google Apps Script Regex returning nothingGoogle Apps 脚本正则表达式不返回任何内容
【发布时间】:2014-12-09 02:05:50
【问题描述】:

我正在尝试从字符串中去除 HTML 标记。它适用于正则表达式检查器,但不适用于此代码:

function myFunction() {
  var textstfu = "<b> I love </b> pancakes <i> I love pancakes </i>";
  textstfu.replace(/(<(\D)>)([^<>])+(<\/(\D)>)/gi, "$3");
  Logger.log(textstfu);
}

它返回的是&lt;b&gt; I love &lt;/b&gt; pancakes &lt;i&gt; I love pancakes &lt;/i&gt;。 这是怎么回事?

【问题讨论】:

    标签: html regex google-apps-script tags


    【解决方案1】:

    您没有将替换表达式分配给变量(.replace 是原型函数,不会分配回原始属性)。

    试试:

    function myFunction() {
      var textstfu = "<b> I love </b> pancakes <i> I love pancakes </i>";
      textstfu = textstfu.replace(/(<(\D)>)([^<>])+(<\/(\D)>)/gi, "$3");
      Logger.log(textstfu);
    }
    

    【讨论】:

    • 我知道我犯了一个愚蠢的错误。但是,当我对其进行测试时,它应该显示为“我喜欢煎饼,我喜欢煎饼”,而它只返回“煎饼”,我假设它是未标记的“煎饼”。为什么会出现这种行为?
    • 你的表达式是贪婪的,所以它从头到尾匹配整个字符串。
    • 修正:正则表达式应该是 /()([^]+)()/g - 里面的“+”捕获组。
    • 是的,你去。如果这就是答案,那么你应该接受它;)
    猜你喜欢
    • 2013-06-02
    • 2019-08-26
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多