javascript - 正则表达式 - 匹配搜索字符串中单词的较好部分

标签 javascript regex

我正在使用 Javascript,目前正在寻找一种方法来匹配尽可能多的模式字母,同时保持原始顺序..

例如,搜索模式 queued 应该针对以下任何搜索字符串返回 march Queue/queue:

  • queueTable

  • scheduledQueueTable

  • qScheduledQueueTable

到目前为止,我已经做到了这一点:

var myregex = new RegExp("([queued])", "i");
var result = myregex.exec('queueTable');

但它似乎无法正常工作,因为它突出显示了单个字符 q,u,e,uee 在单词 Table 的末尾。

有什么想法吗?

最佳答案

optional 生成正则表达式non-capturing group可以使用 Array#reduceRight 生成正则表达式模式的部分方法。

var myregex = new RegExp("queued"
  .split('')
  .reduceRight(function(str, s) {
    return '(?:' + s + str + ')?';
  }, ''), "i");
var result = myregex.exec('queueTable');

console.log(result)

该方法生成正则表达式:/(?:q(?:u(?:e(?:u(?:e(?:d?)?)?)?)?)?)?/


更新:如果您想获得第一个最长的匹配项,请在正则表达式中使用 g 修饰符并使用 Array#reduce 找出最大的匹配项方法。

var myregex = new RegExp(
  "queued".split('')
  .reduceRight(function(str, s) {
    return '(?:' + s + str + ')?';
  }, ''), "ig");

var result = 'qscheduledQueueTable'
  .match(myregex)
  .reduce(function(a, b) {
    return a.length > b.length ? a : b;
  });

console.log(result);

关于javascript - 正则表达式 - 匹配搜索字符串中单词的较好部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42454823/

相关文章:

IE11 中排序函数的 Javascript 语法错误

javascript - 使用 JavaScript 填充 HTML select 语句

sql - Oracle 中不是 REGEXP_LIKE

regex - 如何 grep 查找包含多个连续破折号的字符串?

javascript - 我可以向 $(this) 添加一个变量吗?

javascript - 绑定(bind)到 'input' 时检索键码

javascript - Ember数据加载路线时出错: TypeError: undefined is not a function

c# - 请帮助使用 o'brian 或 macdonald 等名称的正则表达式

MySQL MATCH() AGAINST() 与 REGEXP 匹配整个单词

由于执行新的应用程序,Python 操作系统命令无法正常工作