【问题标题】:Regex for Query String查询字符串的正则表达式
【发布时间】:2013-03-25 19:49:36
【问题描述】:

我有一个正则表达式函数,我认为它可以用于删除查询字符串中的页面变量。现在,如果变量不是第一个变量,它可以正常工作,但是如果变量是第一个变量,它不会捕获 ?search=.

工作案例:

http://blahblah.com/stuff/pages/things?search=somethingURIEncoded&page=2

变成

console.log( req.url.replace(/&page(\=[^&]*)?(?=&|$)|^page(\=[^&]*)?(&|$)/, '') )
http://blahblah.com/stuff/pages/things?search=somethingURIEncoded

非工作案例:

http://blahblah.com/stuff/pages/things?page=2&search=somethingURIEncoded

变成

console.log( req.url.replace(/&page(\=[^&]*)?(?=&|$)|^page(\=[^&]*)?(&|$)/, '') )
http://blahblah.com/stuff/pages/things?page=2&search=somethingURIEncoded

有人知道如何修复我正在使用的这个正则表达式吗?

【问题讨论】:

    标签: javascript regex node.js


    【解决方案1】:

    如果你想解析整个 url,node.js 有一个内置的url 模块。

    它有一个 parse 方法,似乎可以满足您的需求:

    url.parse(urlStr, [parseQueryString], [slashesDenoteHost])
    

    This question 回答了如果您愿意,如何将其重新构建为 URL,并显示了一个使用示例。

    您还有一个内置的querystring 模块。

    你可以使用querystring.parse

    querystring.parse('foo=bar&baz=qux&baz=quux&corge')
    // returns
    { foo: 'bar', baz: ['qux', 'quux'], corge: '' }
    

    【讨论】:

    • 比我以前做的好多了。我很确定我已经尝试过了,但由于某种原因它失败了,可能我没有从解析的 URL 中删除搜索。我有两个问题,我现在没有。谢谢!
    【解决方案2】:

    应该是\?page,而不是^page,但当然您必须将? 替换回来。您可以使用?: 捕获它并使所有其他分组不被捕获。

    【讨论】:

    • 应该注意的是,除了从互联网上偷东西外,我几乎没有适用的正则表达式经验。不过感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    相关资源
    最近更新 更多