优先考虑正则表达式中的组

时间:2015-06-03 20:43:00

标签: javascript regex

我希望我的输出是 var data =“THIS”; 里面的内容,为此,我设法做到了这一点:

var plaintext = fs.readFileSync( process.argv[ 1 ] ).toString();
var regex = new RegExp("var\\ data\\ =\\ \"(.{0,})\";", "g", "y");
var regex2 = new RegExp("\"(.{0,})\"", "g");
var info = JSON.parse(plaintext.match(regex)[0].match(regex2)[0]);

有没有办法只有一个正则表达式,并将代码压缩成2行或3行?

2 个答案:

答案 0 :(得分:0)

这是我的方法:

var matches = plaintext.match(/var data = "([^"]+)"/);

https://jsfiddle.net/7hy8epp5/

答案 1 :(得分:0)

这个怎么样?

plaintext.match(/var\s+data\s*=\s*"(.*)";/)[1]

更新:此正则表达式还会匹配包含转义引号的字符串,例如"\"foo\""只要这些引号后面没有分号。为此,结束引号必须紧跟分号。

作为替代方法,您还可以从匹配的字符串中排除双引号(使用[^"]*而不是.*),并从正则表达式中省略分号。