Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在使用变量时向正则表达式添加元字符_Javascript_Regex - Fatal编程技术网

Javascript 如何在使用变量时向正则表达式添加元字符

Javascript 如何在使用变量时向正则表达式添加元字符,javascript,regex,Javascript,Regex,正如您从示例中看到的,我传递了一个名为snoop的变量,以与函数中的单词参数一致。我希望我为word输入的任何值都放在同一类型的元字符下。问题是每次我试图在ie这个词周围加上元字符( var snoop=newregexp(/\bword/,'gi'))例如,它不起作用。正确的编码方式是什么 var gill = ['airplane','airport','apple','ball'] function auto (word, array){ var geo = array.join

正如您从示例中看到的,我传递了一个名为snoop的变量,以与函数中的单词参数一致。我希望我为word输入的任何值都放在同一类型的元字符下。问题是每次我试图在ie这个词周围加上元字符( var snoop=newregexp(/\bword/,'gi'))例如,它不起作用。正确的编码方式是什么

var gill = ['airplane','airport','apple','ball']

function auto (word, array){
    var geo = array.join(" ")

    var snoop = new RegExp(word, 'gi' )

    var gip = geo.match(snoop)

    console.log(gip)

}

auto("ai", gill)
newregexp(/\bword/,'gi')
中的“word”只是文字字符串“word”。它不是对变量
word
的引用。您可以使用字符串创建一个新的
RegExp
对象,该字符串可以使用串联构建

请记住,您需要使用双反斜杠,因为字符串文字中的单个反斜杠开始一个字符。例如,
“\b”
是退格字符。特殊的转义序列
“\\”
会产生反冲,这是正则表达式中需要的

下面是一个例子,它产生了我认为您试图实现的目标:

var snoop = new RegExp("\\b" + word, "gi")
可以使用此技术将变量插值到正则表达式的任何部分:

// Capture one or more of the characters in `validCharacters` after an equals-sign.
new RegExp("=([" + validCharacters + "]+)")

你说的“元字符”是什么意思
var snoop=newregexp(“\b”+word,“gi”)
?这些[]、^、$、*等…使用字符串版本的
RegExp
;e、 例如,
newregexp(“^”+word)
谢谢,但是你能解释一下为什么我必须对元字符“\b”使用双反斜杠吗?例如var snoop=new RegExp(“\\b”+单词,“gi”)您能更深入地了解我为什么使用双斜杠吗?我还想学习通用格式,这样我就可以自由添加像wwhat一样多的元字符,如果它想这样做的话:/newregexp(\b\w^[word]$/)。语法是什么?所以这个双反斜杠也表示\B、\w、\s?谢谢你的帮助!双反斜杠实际上只是产生一个反斜杠。