我正在使用expressjs和mongoose构建应用程序,正在尝试构建像此处指定的搜索端点Spotify api https://developer.spotify.com/documentation/web-api/reference/search/search/
我在弄清楚如何将给定查询参数转换为正则表达式以匹配所需结果时遇到问题。我的端点看起来像这样example.com/search?q=searchText
要求:
q=roadhouse blues
必须匹配所有结果,其名称中包含跑车和蓝色。例如:同时匹配“布鲁斯跑车”和“布鲁斯跑车”。q="roadhouse blues"
如果提供报价,则必须匹配确切的单词。例如:匹配“我的Roadhouse Blues”,但不匹配“ Blues Roadhouse”q=roadhouse NOT blues
匹配名称中包含roadhouse但不包含blues的所有结果。 q=roadhouse OR blues
匹配名称中包含Roadhouse或blues的所有结果。q=bob year:2014
匹配包含名称bob并在2014年的结果q=bob year:2014-2020
匹配包含名称bob以及2014年至2020年之间的年份的结果这是每个查询的正则表达式:-
注意:所有正则表达式都使用全局,多行和不区分大小写的修饰符
q=roadhouse blues
=> ^.*?(?:roadhouse.*?blues|blues.*?roadhouse).*$
->演示q="roadhouse blues"
=> ^.*?(?:roadhouse blues).*$
->演示q=roadhouse NOT blues
=> ^(?!.*?blues).*?roadhouse.*$
->演示q=roadhouse OR blues
=> ^.*?(?:roadhouse|blues).*$
->演示q=bob year:2014
=> ^.*?bob.*?in the year 2014.*$
->演示q=bob year:2014-2020
=> ^.*?bob.*?in the year (?:201[4-9]|2020).*$
->演示其中大多数遵循非常特定的模式,您应该能够将查询转换为这些正则表达式。最后两个可能需要一些技巧,但是您必须通过示例来说明这两个的特定用例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句