我正在编写一个JavaScript Web应用程序。我想允许用户通过正则表达式搜索目录,并将他们的搜索词写入URL,以便他们可以为结果添加书签。
例如,要为名称以“A”开头并以“a”结尾的状态生成可收藏的搜索:
/states/^A.*a$
人们应该能够为此网址添加书签,并获得与阿拉斯加州,亚利桑那州和阿拉巴马州相匹配的结果。
但是,我发现URL安全字符和正则表达式字符不能很好地结合在一起。例如,当我将^
写入网址时,浏览器会将其重写为%5E
。
有人能建议更好的方法来为正则表达式创建可收藏的URL吗?我不需要支持所有可能的正则表达式字符:只需ASCII加$
,*
,?
,^
和|
。
理想情况下,我想避免使用像/states?init=A&final=a
这样的GET参数的冗长笨重的网址,但也许这就是我需要的方式。
答案 0 :(得分:1)
如果你真的开始在URL中“保持”正则表达式搜索,我只需对搜索字符串进行URL编码/ URL解码并完成它。
您可以显式地对搜索字符串进行URl编码,然后在发出请求时对其进行显式解码。
尽管如此,我强烈建议您将搜索字符串设置为URL 查询参数,而不是将其作为URL本身的一部分。特别是在您搜索的情况下,您最好 将查询字符串作为查询字符串,而不是URL。它有助于SEO,REST兼容性,URL可维护性等等。
最后,还有其他方法允许用户为搜索添加书签。如果您为每个搜索提供一个ID,并将实际查询存储在该特定书签ID的数据库中,您可以为您的用户提供干净,用户友好,易于添加书签,可共享的/states/search/bookmark/12345/
等网址。最重要的是,如果需要,你可以在幕后与他们合作。当您需要升级搜索或想要增加更多功率等时,这非常适合。