我正在为我从头开始编码的博客开发自定义搜索功能。这个博客是面向有技术倾向的读者,我想让读者通过在搜索字段中定义一些高级搜索条件来搜索文章(而不是有多个搜索输入,一个用于标题,一个用于标签,一个用于类别.. ETC)。有点类似于 Jiras高级搜索或 Googles搜索运算符。
我将使用 Javascript 进行编码,但我将使用xRegExp库,它支持本地 RegExp 不支持的所有很酷的功能(命名组匹配、向前看、向后看等)
可搜索的“字段”是:
- 标题
- 概括
- 作者
- 类别
- 标签
- 创建日期)
- 更新(日期)
- (未指定字段)一般搜索短语
要将搜索“字段”添加到搜索条件,您只需键入上面的字段名称之一,然后是冒号 ( :
),然后是与该字段关联的搜索短语。
除此之外,我想允许查看者在搜索条件中添加一些“ OR ”和“ AND ”逻辑,例如搜索作者为john.doe OR mike.smith的文章,或标签为bash的文章 和 脚本。OR运算符可以是||
,AND运算符可以是&&
。
一些示例搜索字符串:
作者:linus 标签:linux Linux 是如何开始的
- 作者:莱纳斯
- 标签:Linux
- 一般搜索词组:Linux 是如何开始的
作者:john.doe || jane.smith 类别:信息安全|| linux 标签:linux && security 保护你的第一台 Linux 服务器
- 作者:john.doe 或 jane.smith
- 类别:Infosec 或 Linux
- 标签:Linux OR 安全
- 一般搜索词组:保护您的第一台 Linux 服务器
问题
我希望尽可能多地通过正则表达式完成字符串解析。我在regex101上遇到了一些事情,但是我在多次匹配模式时遇到问题,用空格分隔。所以任何帮助将不胜感激。谢谢!