2013-03-18 8 views
0

У меня есть некоторые проблемы с javascript-кодом. Из-за Google Closure Linter строки должны быть не более 80 символов, но у меня есть некоторое регулярное выражение, длина которого составляет около 120 символов. Когда я прерываю строку в середине регулярного выражения, она работает неправильно. Как с этим справиться?JavaScript регулярные выражения, написанные в нескольких строках

var pattern = /veeery, veeeery looooooooooooooooooong regular expressssssssssssssssssssssssssion/; 

ответ

4

Раствор должен был бы сделать это:

var pattern = new RegExp(
    'veeery, veeeery looooooooooooooooooong' 
    +' regular expressssssssssssssssssssssssssion' 
); 

Если ваша декларация картина была в петле, которая отлично подходит для регулярного выражения буквально, я бы рекомендовал, чтобы переместить эту декларацию перед циклом , чтобы избежать повторения стоимости создания экземпляра и его компиляции.

Будьте осторожны, чтобы управляющие последовательности, вам придется заменить \ с \\: два следующих регулярных выражений идентичны

/\d/g 
new RegExp("\\d", 'g') 
+0

Спасибо, я постараюсь это :) –

0

Хотя я думаю, что это смешно правило для пуха, то решение было бы создайте регулярное выражение из строкового выражения.

var regex = new RegExp(
    "first part of long regex" + 
    "second part of long regex" + 
    "and so on" 
); 

Вам придется дважды сбежать с экранированными метасимволами в регулярное выражение. То есть, если ваш родной стиль регулярных выражений было:

var regex = /swing on a \*/; 

тогда ваша строка должны быть:

var regex = new RegExp("swing on a \\*"); 
Смежные вопросы