代码之家  ›  专栏  ›  技术社区  ›  Russ Bradberry

如果没有'?'我怎么使这个正则表达式匹配在询问中?

  •  1
  • Russ Bradberry  · 技术社区  · 14 年前

    我使用以下正则表达式将字符串的整个querystring替换为新的:

    "http://www.google.com?bar=1".replace(/\?.*/, "?foo=2")
    

    仅当存在querystring时,此操作才有效。以下操作无效:

    "http://www.google.com".replace(/\?.*/, "?foo=2")
    

    如何使正则表达式匹配这两种情况?

    5 回复  |  直到 14 年前
        1
  •  3
  •   Quentin    14 年前

    :

    |$
    
    replace(/\?.*|$/, "?foo=2")
    
        2
  •  3
  •   bobince    14 年前

    var a= document.createElement('a');
    a.href= 'http://www.google.com/?bar=1';
    a.search= '?foo=2';
    alert(a.href); // http://www.google.com/?foo=2
    
        3
  •  2
  •   Alexander Gessler    14 年前

    ? -如果没有附加querystring,则先删除旧的查询字符串。接吻。

        4
  •  1
  •   Anurag    14 年前

    url.replace(/([^?]+).*/, "$1?querystring");
    
        5
  •  0
  •   Rick    14 年前

    这应该是可行的,但我不确定你到底想做什么,我不记得javascript中regex的语法,所以replacestring是python语法,但它应该给你一个想法。。你在匹配一个被挖出的“?”当你做“\?”所以它和第二个不匹配,因为没有“?”在字符串中。

    /(.*?google.com)(.*?)/  
    
    replacestring = '\\1'+'?foo=2'