我已经看过很多关于此类问题的类似问题,但它们并没有解决我的问题...

这是我必须匹配的字符串:“| 6 [1] |”其中“6”是我必须放在正则表达式中的变量。

我尝试创建一个(pid是包含数字的变量):

var filter = new RegExp("/\|"+pid+"[\d*\]\|/");

看起来无法正常使用。.尝试使用Chrome控制台

最佳答案

从字符串构造正则表达式时,不需要/分隔符:

var filter = new RegExp("\|"+pid+"[\d*\]\|");
/ token 用于向解析器表示正则表达式文字的开始/结尾,就像"' token 表示字符串文字的开始/结尾一样。在这种情况下,您使用的是字符串文字,因此不需要regexp文字分隔符。

您的实际正则表达式无法正常工作,因为:
  • 您错过了方括号
  • 开头的转义字符
  • 从字符串
  • 构建正则表达式时,需要转义文字反斜杠

    因此,工作代码应为:
    var filter = new RegExp("\\|"+pid+"\\[\\d*\\]\\|");
    //                       ^         ^^ ^   ^  ^ Add in these backslashes
    

    09-10 13:35
    查看更多