在regexPrefix中使用变量?

时间:2018-10-25 17:04:42

标签: javascript regex

// Util function
function addFormatter(input, formatFn) {
  let oldValue = input.value;

  const handleInput = event => {
    const result = formatFn(input.value, oldValue, event);
    if (typeof result === 'string') {
      input.value = result;
    }

    oldValue = input.value;
  }

  handleInput();
  input.addEventListener("input", handleInput);
}

// Example implementation
// HOF returning regex prefix formatter
function regexPrefix(regex, prefix) {
  return (newValue, oldValue) => regex.test(newValue) ? newValue : (newValue ? oldValue : prefix);
}

// Apply formatter
const input = document.getElementById('user_login');
addFormatter(input, regexPrefix(/mysite-/, 'mysite-'));

我想用这个小提琴来处理变量而不是文本,这是一行:

addFormatter(input, regexPrefix(/mysite-/, 'mysite-'));

如您所见,它仅允许您在mysite-之后输入文本,这就是我希望它起作用的方式。但是我希望能够在变量mysite-处使用它。像这样:

addFormatter(input, regexPrefix(/$sitetitle/, $sitetitle));

您对如何执行此操作有任何想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用RegExp()构造函数动态创建正则表达式。

addFormatter(input, regexPrefix(new RegExp('^' + $sitetitle), $sitetitle));