思路

思路也非常简单,用正则匹配结果就行。例如,关键词bj,拿来匹配的正则应该是/(.)(b)(.)(j)(.)/i,忽略大小写。
观察目标正则的规律,发现也很简单:
1. 在每次关键字之间插入:)(.
)(
2. 然后头是:(.)(
3. 尾是:)(.
)
4. 然后new RegExp生成个正则就行

实现代码

  1. //拼接需要查找的字符模板
  2. function generReg(valo) {
  3. return new RegExp('(.*)(${val.split('').join(')(.*)(')})(.*)','i');
  4. }
  5. // 简易版
  6. function generReg(val) {
  7. let head = '(.*)('
  8. let tail = ')(.*)'
  9. let body = val.split('').join(')(.*)(')
  10. return new RegExp(head + body + tail,'i')
  11. }