JSLint - 带有变量的正则表达式的错误转义
Posted
技术标签:
【中文标题】JSLint - 带有变量的正则表达式的错误转义【英文标题】:JSLint - Bad Escaping for a Regex with variables 【发布时间】:2013-01-15 04:06:52 【问题描述】:我看过一些关于 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];
“真正的”程序员可能很容易想出一些更简单的东西。任何帮助将不胜感激。
谢谢。
【问题讨论】:
我不知道您所说的bad escapements
是什么意思,但您不需要\.
,只需.
就可以在字符类中使用。也许你可以试试。
我不确定这个警告。但是,请注意strValueName
可能包含在正则表达式中具有特殊含义的字符,这会弄乱生成的正则表达式。
关于可能具有正则表达式字符的变量的要点。我在受控实现和单个项目中使用它,但我可能应该通过转义所有特殊字符来使其更健壮。
我也会尝试从字符类中删除转义字符。谢谢。
Explosion Pills - 是的,这就是 JSLint 警告我的问题。再次感谢。
【参考方案1】:
JSLint 不喜欢的问题是 '.' 'Explosion Pills' 指出的字符类中的字符。
当我删除“。”时一切都很好。
谢谢。
【讨论】:
以上是关于JSLint - 带有变量的正则表达式的错误转义的主要内容,如果未能解决你的问题,请参考以下文章