为正则表达式创建可收藏的URL?

问题描述:

我在写一个JavaScript web应用程序。我希望允许用户通过正则表达式搜索目录,并将他们的搜索词写入URL以便他们可以为结果添加书签。为正则表达式创建可收藏的URL?

例如,以产生状态的可收藏的搜索与名字起“A”和结束“一”:

/states/^A.*a$ 

人们应该能够书签的网址,并得到结果匹配阿拉斯加,亚利桑那州和阿拉巴马。

但是,我发现URL安全字符和正则表达式字符在一起播放不好。例如,当我向URL写入^时,浏览器将其重写为%5E

任何人都可以建议一个更好的方式来创建一个正则表达式的书签URL?我不需要支持每种可能的正则表达式字符:只需ASCII加$,*,?,^|

理想情况下,我想避免使用GET参数(如/states?init=A&final=a),但也许这就是我需要去的一个漫长而笨重的URL。

如果您确实在URL中使用正则表达式搜索“持久化”,那么我只需简单地对搜索字符串进行URL编码/ URL解码并完成它。

您可以显式地URl-对搜索字符串进行编码,然后在发出请求时对其进行明确解码。

也就是说,我强烈建议您将搜索字符串设置为URL 查询参数而不是URL本身的一部分。特别是在你的情况下,它是一个搜索,你是最好有查询字符串,以及查询字符串,而不是URL。它可以帮助之类的搜索引擎优化,REST的合规性,可维护性URL等

最后,还有其他方式允许用户书签搜索也是如此。如果您为每个搜索提供一个ID,并将该实际查询存储在数据库中以获取该特定书签ID,则可以为用户提供诸如/states/search/bookmark/12345/这样的好网址,这些网址干净,用户友好,易于书签,可共享以及最重要的是,如果你需要,你可以在幕后与他们做些事情。当您需要升级您的搜索,或者想要添加更多功率等时,这非常棒。

+0

谢谢!我不想URL编码/解码,因为它看起来很丑。我想也许querystring路线是要走的路 - 它看起来像querystrings中的字符不会被编码。 – Richard 2012-03-16 18:09:03

+0

@Richard - 我会_still_编码查询字符串,因为不同的浏览器可能会有不同的行为。如果URL清洁是目标,抽象实际查询(就像我在最后提到的那样)是最好的路线,因为它提供了最干净的URL和服务器端的最大灵活性。 – cdeszaq 2012-03-16 18:11:04

+0

我也喜欢可读和可破解的URL,所以我想避免抽象查询,如果可能的话......也许这是一个没有真正好的解决方案的问题。 – Richard 2012-03-22 09:58:20