变量声明正则表达式

air*_*n19 0 ruby regex

我正在尝试制作一个简单的Ruby正则表达式来检测JavaScript声明,但它失败了.

正则表达式:

lines.each do |line|
     unminifiedvar = /var [0-9a-zA-Z] = [0-9];/.match(line)
     next if unminifiedvar == nil #no variable declarations on the line
     #...
end
Run Code Online (Sandbox Code Playgroud)

测试线:

var testvariable10 = 9;
Run Code Online (Sandbox Code Playgroud)

Gar*_*han 5

变量名可以有多个字符,因此您需要+在字符集之后[...].(另外,JS变量名可以包含字母数字以外的其他字符)数字文字可以有不止一个字符,所以你想+在RHS了.

更重要的是,有许多其他灵活性,你会发现使用正则表达式处理会更加痛苦.例如,考虑var x = 1+2+3;var myString = "foo bar baz";.变量声明可能跨越多行.它不必以分号结尾.它可能在其中间有评论.等等.正则表达式并不是这项工作的正确工具.

当然,它可能发生,你是从一个特定的源代码分析具有非常特殊的结构,可以保证每声明有你要找的具体形式.在这种情况下,继续,但如果你正在处理的代码的性质有任何危险,那么你将面临一个痛苦的问题,而这个问题实际上并不是用正则表达式来解决的.

[写完约一天后,为了解决"天人"所指出的错误.]