【问题标题】:How to use a variable within a regex in Javascript?如何在 Javascript 的正则表达式中使用变量?
【发布时间】:2020-03-20 21:26:18
【问题描述】:

我有一个正则表达式,想在里面放一个变量。我该怎么办?

我的代码是这样的:

public regexVariable(vRegex: string, testSentences: Array<any> ) {
    const regex = new RegExp('/^.*\b(' + vRegex + ')\b.*$/');
    const filterSentece = testSentences.filter(result => {
        if (regex.test(result)) {
            return result
        })
}

【问题讨论】:

  • 不要忘记在字符串文字中转义反斜杠并删除前导/尾随正斜杠。
  • 警告 正则表达式开头的“.*”可能不是您想要的。由于正则表达式默认情况下是贪婪的,因此它很有可能捕获到很多。因此,如果您遇到任何问题,请尝试使用 '.*?'而不是 '.*' 来获得非贪婪的行为。

标签: javascript regex typescript variables


【解决方案1】:
const regex = new RegExp(`^.*\\b(${vRegex})\\b.*$`);

您可以使用template literals`,而不是"/')来构建可以插入表达式的字符串;不再是老派+ing。

不过,您的代码中唯一存在实际问题的是\b 字符类。这个序列是你希望RegExp 看到的,但你不能只写那个,否则你会发送RegExp backspace character
您需要编写\\b,正如您从该链接中看到的那样,它将为RegExp to interpret创建一个带有\ 和普通b 的字符串。

【讨论】:

  • 更好:String.raw`^.*\b${vRegex}\b.*$`。也不要忘记解释为什么你改变了你所做的事情。
  • 谢谢,它帮助了我
【解决方案2】:

你快到了,看看RegEx constructor

const regex = new RegExp('^.*\\b(' + vRegex + ')\\b.*$');

【讨论】:

    猜你喜欢
    • 2011-08-20
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 2017-10-11
    • 2019-11-08
    相关资源
    最近更新 更多