正则表达式匹配表情

时间:2015-02-18 04:24:30

标签: javascript regex

我正在我的网站上实施Twitch.tv表情,但我在使用这个正则表达式时遇到了麻烦。我90%在那里,但有一个案例,我不知道如何解决。

这是我的正则表达式:(选项为gm

(^|\s+| )Kappa($|\s+)

在循环中替换Kappa以检查不同的表情。这是我的测试用例。第二个和第三个未被检测到。每行中的第二个Kappa没有被捕获。

Kappa
Kappa Kappa
Kappa Kappa Kappa
KappaHD Kappa FrankerZ Kappa
Someone Said: Kappa
:  Kappa
Kappa KappaHD Kappa
KappaKappa 

如果您不熟悉,这些是我希望遵循的规则:

  1. 查找Kappag设置)
  2. 的所有实例
  3. 可以在字符串/行(m设置)
  4. 的开头或结尾处
  5. 必须独立,而不是在一个单词的中间
  6. 问题似乎是第一个Kappa通过后面的空格匹配,所以找不到第二个。

    这是一个Regex101,其示例代码为:https://regex101.com/r/fY0fN4/3

    如何让它正确检测KappaKappa Kappa的两个实例?

    我考虑在\sKappa\s上运行第二次查找,但这似乎不是最佳解决方案。

2 个答案:

答案 0 :(得分:1)

(?:^|\s+| )Kappa(?=$|\s+)

试试这个。看看演示。

https://regex101.com/r/zB3hI5/14

您需要的是lookahead,或者当您在space之后使用Kappa时,第二个Kappa无法与theres no space behind it匹配。所以请使用0 width assertion

答案 1 :(得分:1)

更简单的解决方案:

\bKappa\b

https://regex101.com/r/jG2wO4/1

字边界" \ b"将不会消耗任何不是单词字符的东西。