如何忽略正则表达式中的括号[重复]
Posted
技术标签:
【中文标题】如何忽略正则表达式中的括号[重复]【英文标题】:How to ignore brackets in a regex [duplicate] 【发布时间】:2020-01-16 04:33:38 【问题描述】:我有一个正则表达式,它采用模板文字,然后将其与条件和链接的 CSV 进行匹配。
const regex = new RegExp(`^$condition,\/.+`, 'gi');
例如,变量喉咙痛会匹配
'Sore throat,/conditions/sore-throat/'
我遇到了一个问题,模板文字可能包含括号,因此正则表达式不再匹配。所以 糖尿病(1 型) 不匹配
'Diabetes (type 1),/conditions/type-1-diabetes/'
我尝试从模板文字中删除括号及其内容,但在某些情况下,括号并不总是位于字符串的末尾。如,乳酸脱氢酶(LDH)检测
'Lactate dehydrogenase (LDH) test,/conditions/ldh-test/'
我对正则表达式不太熟悉,所以很抱歉,如果这很简单,但我无法找到一种方法来逃避括号,而不知道它们在字符串中的确切位置,在我的情况下不是可能。
【问题讨论】:
【参考方案1】:您正在尝试使用可能包含特殊字符的变量作为正则表达式字符串的一部分,但您/不/希望使用它们的“正则表达式”含义来解释这些特殊字符。我不知道在 javascript 正则表达式中执行此操作的任何本机方式 - 在 Perl 中,您将使用 \Q$condition\E
,但这似乎不受支持。
相反,您应该在将条件变量传递到正则表达式之前对其进行转义,使用类似 this one 的函数:
function escapeRegExp(string)
return string.replace(/[.*+?^$()|[\]\\]/g, '\\$&'); // $& means the whole matched string
【讨论】:
不是我,但可能是因为你 剪切粘贴 Short and Sweet 来自这里 ***.com/questions/3446170/… 的答案应该只是一个评论。以上是关于如何忽略正则表达式中的括号[重复]的主要内容,如果未能解决你的问题,请参考以下文章