Проблема с вашим регулярным выражением заключается в том, что вы рассматриваете его как строку, а ваши обратные косые черты теряются в процессе. Если вы введете "{{[^\{\s}]+\}}"
в предупреждение, вы увидите, что оно отображает {{[^{s}]+}}
, тем самым теряя все ваши обратные косые черты. Если вы хотите сохранить обратную косую черту, вам нужно будет удвоить ее: "{{[^\\{\\s}]+\}}"
Предположим, вы отправляете ее в RegExp так, как RegExp("{{[^\\{\\s}]+\}}")
. Это хорошо, но это то же самое, что сказать /{{[^\{\s}]+}}/
, который является буквальным синтаксисом JavaScript для построения регулярного выражения. Таким образом, вы могли бы сделать:
var reg1=RegExp("{{[^\\{\\s}]+\}}");
var reg2=/{{[^\{\s}]+}}/;
reg1.test('{{text}}');//true
reg2.test('{{text}}');//true
Вы также можете записать его в виде одной строки: /{{[^\{\s}]+}}/.test('{{text}}')
Там в несколько регулярных способов выражения там для JavaScript, некоторые работы по нитке и ожидает от вас, чтобы отправить его регулярно выражение, а некоторые принимают регулярное выражение и ожидают строку. Поэтому будьте осторожны в том порядке, в котором вы отправляете свою строку и регулярное выражение методам.
В любом случае .. Я думаю, что просто 'var arrayResults = myString.match (/{{.*?}}/g);' превосходит: _https: //regex101.com/r/xI2gP9/1_ –
Кроме того, что вы пытаетесь достичь? И почему regex? Возможно, есть и другие методы анализа, которые могут найти скобки внутри скобок, что регулярное выражение не может сделать. –
И почему '{{text}' соответствует регулярному выражению, которое ожидает ** двух ** закрытия фигурных скобок? – Ultimater