首页 > 解决方案 > 正则表达式跳过以查找匹配项

问题描述

我的 MongoDB 数据库中有包含­字符的字符串(用于分词目的)。
我希望我的表达式也匹配包含它的术语(好像它们不匹配):

search term: haha 
output: haha, hahaha, ha­ha

标签: regexmongodb

解决方案


它需要将 INPUT 每个字符转换为回车“CR”,因为 CR 可以在任何地方:

let text = "hohoho, hehehe, ha­ha";
let input = "haha"
let cr = "­"

// convert CR into REGEX format
let crr = "(?:"+cr+")?"

// split string into 1 char array
let input_split = input.match(/.{1}/g)
// add cr regex to char
let r = input_split.map(function(i)
{
    return crr+i
});
// array to string + last regex
r = r.join('')+crr

console.log(r)


r = new RegExp(r, "i");
let m = text.match(r)

console.log(m)

打开控制台查看工作:

https://jsfiddle.net/1d2m7jb0/1/

输出示例:

(?:­)?h(?:­)?a(?:­)?h(?:­)?a(?:­)?
[
  'ha­ha',
  index: 16,
  input: 'hohoho, hehehe, ha­ha',
  groups: undefined
]

推荐阅读