В общем, регулярное выражение не является правильным подходом здесь. Есть много случаев, которые являются допустимым синтаксисом JavaScript, но это не будет хорошо вписываться в регулярное выражение. Тем не менее, вот один из способов сделать это:
var code = '(("${Operation}" == "Fixed") && (thing1 == thing2))';
code = code.replace(/"[^"]*\$\{[^}]*\}[^"]*"\s*==\s*"[^"]*"/, 'true');
Это касается только двойных кавычек. Если вам нужно обрабатывать оба типа котировок, выражение будет более сложным. Если вам нужно обрабатывать оба типа котировок и, ваши строки могут содержать кавычки, тогда регулярное выражение действительно не будет работать.
Если вы можете подумать о другом способе решения этой проблемы, то вам следует. Например, откуда берется строка? Можете ли вы получить данные в другом формате?
Кроме того, похоже, что вы настраиваете эту строку для вызова eval
. Это плохая идея, если она содержит какой-либо пользовательский ввод.
Это довольно гибкое описание проблемы. –