JSLint — плохое экранирование для регулярного выражения с переменными

Я видел несколько сообщений о предупреждениях JSLint "bad escapement", но я просто хотел посмотреть, правильно ли я делаю это регулярное выражение. (Примечание - я начинающий программист).

У меня есть функция (ниже), которая пытается разобрать переменную по ее имени в длинном сообщении. Регулярное выражение работает хорошо, но должен ли я что-то изменить в ответ на предупреждение JSLint?

Очень упрощенная версия msg может выглядеть примерно так:

ИмяПеременной1 = Значение1
ИмяПеременной2 = Значение2
ИмяПеременной3 = Значение3

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

Вот функция разбора, которую я использую:

    function parseValue(msg, strValueName) {
        var myRegexp = new RegExp(strValueName + ' = ([A-Z3][a-zA-Z\. 3]+)[\\n\\r]+', 'gm');
        log('parseValue', 'myRegexp = ' + myRegexp.toString());
        var match = myRegexp.exec(msg);
        log('parseValue', 'returning match = ' + match[1] );
        return match[1];
    }

Вероятно, есть что-то гораздо более простое, что «настоящий» программист может довольно легко придумать. Любая помощь будет оценена по достоинству.

Благодарю.


person Rob G    schedule 31.01.2013    source источник
comment
Я не знаю, что вы подразумеваете под bad escapements, но вам не нужен \., достаточно . внутри класса персонажей. Может быть, вы можете попробовать это.   -  person Explosion Pills    schedule 31.01.2013
comment
Я не уверен в предупреждении. Однако обратите внимание, что strValueName может содержать символ, который имеет особое значение в регулярном выражении, что испортит результирующее регулярное выражение.   -  person nhahtdh    schedule 31.01.2013
comment
Хорошая точка зрения на переменную, потенциально имеющую символы регулярного выражения. Я использовал его в контролируемой реализации и одном проекте, но мне, вероятно, следует сделать его более надежным, избегая всех специальных символов.   -  person Rob G    schedule 01.02.2013
comment
Я также попробую удалить escape-символ из класса символов. Благодарю.   -  person Rob G    schedule 01.02.2013
comment
Таблетки взрыва. Да, это была проблема, о которой меня предупреждал JSLint. Спасибо еще раз.   -  person Rob G    schedule 01.02.2013


Ответы (1)


Проблема, которая не нравилась JSLint, заключалась в '.' персонаж в классе персонажей, как указано в «Таблетки взрыва».

Когда я удалил '.' все было хорошо.

Спасибо.

person Rob G    schedule 01.02.2013