Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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,我有一个正则表达式,它接受一个模板文本,然后将其与条件和链接的CSV进行匹配 const regex = new RegExp(`^${condition},\/.+`, 'gi'); 例如,变量喉咙痛将匹配 'Sore throat,/conditions/sore-throat/' 我遇到了一个问题,模板文本可能包含方括号,因此正则表达式不再匹配。所以1型糖尿病并不匹配 'Diabetes (type 1),/conditions/type-1-diabetes/' 我已经尝试从模板文

我有一个正则表达式,它接受一个模板文本,然后将其与条件和链接的CSV进行匹配

const regex = new RegExp(`^${condition},\/.+`, 'gi');
例如,变量喉咙痛将匹配

'Sore throat,/conditions/sore-throat/'
我遇到了一个问题,模板文本可能包含方括号,因此正则表达式不再匹配。所以1型糖尿病并不匹配

'Diabetes (type 1),/conditions/type-1-diabetes/'
我已经尝试从模板文本中删除括号及其内容,但在某些情况下,括号并不总是位于字符串的末尾。如乳酸脱氢酶LDH试验


我对正则表达式不太熟悉,因此如果这很简单,我很抱歉,但我无法找到一种方法在不知道括号在字符串中的确切位置的情况下转义括号,这在我的情况下是不可能的。

您试图使用一个可能包含特殊字符的变量作为正则表达式字符串的一部分,但是您/不/希望使用正则表达式的含义来解释这些特殊字符。我不知道在Javascript正则表达式中有任何本机方法可以做到这一点-在Perl中,您可以使用\Q${condition}\E,但这似乎不受支持

相反,在将条件变量传递到正则表达式之前,应使用如下函数对其进行转义:


不是我说的,但可能是因为你在这里剪下了简短而甜蜜的答案,而这应该只是一个评论。
'Lactate dehydrogenase (LDH) test,/conditions/ldh-test/'
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}