JSLint - Лошо екраниране за регулярен израз с променливи

Видях някои публикации за предупреждения за JSLint „лош изход“, но просто исках да видя дали правя този регулярен израз правилно. (Забележете - аз съм програмист-професионалист).

Имам функция (по-долу), която се опитва да анализира променлива от нейното име в дълго съобщение. Регулярният израз работи добре, но трябва ли да променя нещо в отговор на предупреждението JSLint?

Една много опростена версия на msg може да изглежда по същество така:

Име на променлива1 = Стойност1
Име на променлива2 = Стойност2
Име на променлива3 = Стойност3

Действителното съобщение има различни неструктурирани данни отгоре и отдолу. Трябваше да използвам странен Regex, тъй като въпреки че по-простият работеше на всички уебсайтове за тестване, той не работеше в сървърното приложение, което използваме, така че това е единственият начин да го накарам да работи. Регулярният израз включва променлива.

Ето функцията за анализ, която използвам:

    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 не хареса, беше „.“ характер в класа на символите, както е посочено от „Explosion Pills“.

Когато премахнах „.“ всичко беше добре.

Благодаря.

person Rob G    schedule 01.02.2013