为正则表达式创建可收藏的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/
这样的好网址,这些网址干净,用户友好,易于书签,可共享以及最重要的是,如果你需要,你可以在幕后与他们做些事情。当您需要升级您的搜索,或者想要添加更多功率等时,这非常棒。
谢谢!我不想URL编码/解码,因为它看起来很丑。我想也许querystring路线是要走的路 - 它看起来像querystrings中的字符不会被编码。 – Richard 2012-03-16 18:09:03
@Richard - 我会_still_编码查询字符串,因为不同的浏览器可能会有不同的行为。如果URL清洁是目标,抽象实际查询(就像我在最后提到的那样)是最好的路线,因为它提供了最干净的URL和服务器端的最大灵活性。 – cdeszaq 2012-03-16 18:11:04
我也喜欢可读和可破解的URL,所以我想避免抽象查询,如果可能的话......也许这是一个没有真正好的解决方案的问题。 – Richard 2012-03-22 09:58:20