javascript - 正则表达式从术语列表中提取多词匹配

标签 javascript regex glossaries

我正在尝试修改 glossarizer 中的以下正则表达式(在 javascript 中)插件以使其不那么宽松。

 var regex = new RegExp("(^s*|[^!])" + this.clean(term) + "\\s*|\\,$", "i");

它正在尝试检索术语和定义的 JSON 数组中术语的定义。

[{term: "black cat", definition: "a black cat"},
{term: "cat", definition: "meow"}]

现在,当我传入“cat”时,它正在匹配“black cat”,但我不希望它这样做。我希望它匹配从字符串开头或逗号和 */s 之后开始并以逗号或字符串末尾结尾的内容,以便可以传入多个定义.

*Match for cat:
'cat'
' Cat '
'cat, feline'
'feline, cat  , cheetah'

*Not a match for cat:
'black cat'
'Catapult'
'!cat'

我尝试将 new RegExp("(^|^s*|[^!])"+ this.clean(term) + "\\s*$|\\s*,", "i ") (添加管道,因此它应该是字符串的开头或逗号和空格,因此最后它会是空格,后跟逗号或字符串的结尾,但它没有达到预期的效果(使用 regex101.com,但大多感到困惑)

最佳答案

您最好通过逗号空格分割列表并过滤结果。正则表达式(尤其是 JS 风格,缺乏后向查找)不擅长解析这样的语法。

terms = "feline, cat, cheetah";
if(terms.toLowerCase().split(", ").indexOf("cat") >= 0)
   // a cat was there!

关于javascript - 正则表达式从术语列表中提取多词匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29214169/

相关文章:

javascript - 从重定向获取链接

javascript - mongodb 文章.长度未定义

java - 从每一行中获取第一个词?

java - 是什么导致这两个正则表达式的工作方式不同?

latex - 如何链接到词汇表项目(使用包词汇表)

javascript - 如何在 VBA 中调用 JavaScript 函数?

javascript - 本地 D3 无法在线工作

regex - 如何加速我的 Perl 正则表达式匹配?

latex - 从词汇表中排除条目?