【问题标题】:RegExp does not match all cases [duplicate]RegExp 不匹配所有情况[重复]
【发布时间】:2014-02-05 15:54:09
【问题描述】:

假设有字符串:

var se = 'Trampolines rain cover';

并且是搜索词:

var te = 'trampoline';

我有正则表达式:

RegExp('\\b(('+te+')|('+te+')[s])\\b', 'gi');

它确实匹配字符串中的“Trampolines”。

问题:如果我寻找 t = 'trampoline rain';在带有提及正则表达式的字符串中 - 没问题 - 它确实匹配,但如果我要查找 t = 'trampoline cover' 将不会有任何匹配。

如果可以匹配短语,即使字符串中存在其他单词,我应该如何编辑此 RegExp?

【问题讨论】:

  • 看来st 需要颠倒过来。另外,\b((X)|(X)[s])\b 可以简化为\bXs?\b
  • 这与您之前的问题有何不同?不要多次问同一个问题。
  • 问题与上一个主题不同,但我对其进行了编辑,因为我找到了问题的解决方案。

标签: javascript regex


【解决方案1】:

您似乎正在尝试进行全文搜索,这在 JS 中无法完全发挥作用。看看http://lunrjs.com/

但仅供您使用,它可能会起作用

var se = 'Trampolines rain cover';
var te = 'trampoline cover';

var regexBuilder = '\\b' + te.split(/\s+/).join('s?\\b.*?\\b') + 's?\\b';
var regex = new RegExp(regexBuilder, 'gi');

se.match(regex);

【讨论】:

  • 谢谢,这是我需要的。因为我只在某些字符串中进行搜索,没有换行符和其他例外 - 它符合需求。
猜你喜欢
  • 1970-01-01
  • 2016-07-27
  • 2011-08-15
  • 2016-05-20
  • 2017-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多