javascript - 使用 Regex 拆分主题标签和搜索项目

标签 javascript regex

我有一个正则表达式来列出输入到我的应用程序中的搜索中的主题标签,如下所示:

text.match(/#[a-z]+/gi);

和一个正则表达式来列出搜索中的所有单词

text.match(/\S+\s*/g);

我想要做的是将主题标签和单词拆分为两个单独的列表,因此我希望能够更新第二个正则表达式,以便它忽略主题标签。我将如何实现这一点?

例如,如果输入是:

“你好,这是今天的#my #question”

预期的输出应该是 2 个数组:

[Hello, this, is, for, today], 
[my, question]

如果可能的话,我还想让主题标签正则表达式返回没有主题标签的单词,否则如果不可能的话,我可以稍后将数组中的单词字符串拆分

最佳答案

您可以通过消极和积极的回顾来做到这一点。显然,负面回顾将匹配没有您的“哈希标签”的作品,而正面回顾将匹配带有它们的作品。


Negative LookBehind 以匹配您的正常搜索词

/\b(?<!#)[^#\s]+/g
  • \b确保您看到的是单词的开头
  • (?<!)是消极的回头看。防止 # 的匹配

Regex101 Example


Positive LookBehind 以匹配您的“散列”字词

/(?<=#)\w+/g
  • (?<=)是正后视,如果 # 则允许匹配在 \w+ 后面找到

Regex101 Example


Additional information关于环视

关于javascript - 使用 Regex 拆分主题标签和搜索项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56387192/

相关文章:

javascript - 用于自定义数据的 serializeData 函数与 Marionette.renderer

javascript - Colorbox.js 内联内容不会显示

ruby-on-rails - 在 Rails 路线约束中匹配双斜线

Python Pandas DataFrame 替换 : strip string from trailing numbers

javascript - 使用正则表达式仅搜索单词开头的关键字

javascript - 如何像实际日期字段一样使用格式化日期

javascript - 单页应用程序的验证码

javascript - 幽灵博客不创建 RSS 提要

.net - ToPascalCase() C# for all caps 缩写

javascript - 在 RegExp 中处理不同的匹配项