2015-12-03 3 views
1

Я придерживался шаблона регулярного выражения кода для javascript. Я хочу проверить эту строку {{text}. Но все равно не работает. Для C# его рабочая находка. здесь код для C#Javascript Regex Pattern "{{text}}"

"{{[^\{\s}]+\}}" 

Я хочу начать с {{end with}}. между может быть текст или номер

+0

В любом случае .. Я думаю, что просто 'var arrayResults = myString.match (/{{.*?}}/g);' превосходит: _https: //regex101.com/r/xI2gP9/1_ –

+1

Кроме того, что вы пытаетесь достичь? И почему regex? Возможно, есть и другие методы анализа, которые могут найти скобки внутри скобок, что регулярное выражение не может сделать. –

+1

И почему '{{text}' соответствует регулярному выражению, которое ожидает ** двух ** закрытия фигурных скобок? – Ultimater

ответ

-1

Проблема с вашим регулярным выражением заключается в том, что вы рассматриваете его как строку, а ваши обратные косые черты теряются в процессе. Если вы введете "{{[^\{\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, некоторые работы по нитке и ожидает от вас, чтобы отправить его регулярно выражение, а некоторые принимают регулярное выражение и ожидают строку. Поэтому будьте осторожны в том порядке, в котором вы отправляете свою строку и регулярное выражение методам.

+0

Я пробовал это .. его работа! большое спасибо –

4

Попробуйте это регулярное выражение:

^\{\{[\d\w]+\}\}$ 

Это имеет смысл для меня явно совпадает с любым количеством символов или цифр, а не пытаться соответствовать что-нибудь, что исключает пропуска. Ваше исходное регулярное выражение будет соответствовать {{@}}, которое я не думаю, что вы хотите.

Regex101

Update:

Как @Washington отметил, скобки не являются специальными символами в JavaScript, и поэтому вы должны не нужно избежать их. Тогда, похоже, проблема, с которой вы столкнулись, заключалась в том, как вы соответствовали.

+2

Кстати, если вы не регулярно использовали инструмент по ссылке Тима, я настоятельно рекомендую его. Хотя отладка регулярного выражения в консоли прекрасна, контекстная информация, предоставляемая ** Regex101 **, отлично показывает, что делает каждый бит вашего выражения. Это один из моих любимых онлайн-инструментов. – jusopi