Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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_Arrays_Regex - Fatal编程技术网

Javascript 使用数组中的保留字符创建正则表达式

Javascript 使用数组中的保留字符创建正则表达式,javascript,arrays,regex,Javascript,Arrays,Regex,我正在尝试使用基于标点字符数组的RegExp构造函数创建一个regex,如下所示: const标点符号=['?',','+']等 然后按如下方式使用: _.each(punctuation, (character) => { const regex = new RegExp(character, 'g'); // do something with regex }); 由于?和+是为regex保留的,我需要对它们进行转义-我假设使用转义()或简单地添加反斜杠会非常直接,但

我正在尝试使用基于标点字符数组的RegExp构造函数创建一个regex,如下所示:

const标点符号=['?',','+']

然后按如下方式使用:

_.each(punctuation, (character) => {
    const regex = new RegExp(character, 'g');
    // do something with regex
});
由于
+
是为regex保留的,我需要对它们进行转义-我假设使用
转义()
或简单地添加反斜杠会非常直接,但我根本无法实现这一点

我收到以下错误:
无效的正则表达式:/?/:无需重复


有什么建议吗?

使用双黑斜杠将其转义,您的代码将变成:

const punctuation = ['\\?', '\\.', '\\+'];

_.each(punctuation, (character) => {
    const regex = new RegExp(character, 'g');
    // do something with regex
});

使用双黑斜杠将其转义,您的代码将变为:

const punctuation = ['\\?', '\\.', '\\+'];

_.each(punctuation, (character) => {
    const regex = new RegExp(character, 'g');
    // do something with regex
});

在数组中只有一个字符的特定情况下,可以执行以下操作:

new RegExp("\\" + character, 'g');

在数组中只有一个字符的特定情况下,可以执行以下操作:

new RegExp("\\" + character, 'g');

转义字符串“\\`.thansk@destoryer”中的反斜杠,但这也会引发语法错误:
无效的正则表达式:/\/:\在模式的末尾
new RegExp(“\\?”)。test(“?”
应该可以工作。在这种情况下,
new RegExp(“\\”+字符,'g')@revo谢谢-正是我需要的,现在看起来很简单#longdayEscape字符串“%\\`.thansk@destoryer中的反斜杠,但这也会引发语法错误:
无效的正则表达式:/\/:\在模式的末尾
new RegExp(“\\?”)。test(“?”
应该可以工作。在这种情况下,
new RegExp(“\\”+字符,'g')@revo谢谢-正是我需要的,现在看起来很简单#longdaythank you-很好的建议,但并不完全是我所需要的,因为我想将标点数组用于各种用途,而不仅仅是正则表达式。上面revo的回答对我很有帮助。谢谢-很好的建议,但不完全是我需要的,因为我想将标点数组用于各种用途,而不仅仅是正则表达式。上面瑞沃的回答帮助了我。