JScript正则表达式:开始行不起作用?

时间:2014-06-13 20:29:25

标签: regex windows jscript

我想从配置文件剪切路径:

var out = '#Path to the database root';
out += '\ndatadir="C:/Program Files/MySQL/MySQL Server 5.0/Data/"';
out += '\nblah-blah-blah-blah-blah';

var re = new RegExp('^datadir="(.*)"', 'g');
var result = out.match(re);
if (result == null){    
    WScript.Echo("datadir not found");
}
WScript.Echo("datadir=" + RegExp.lastParen);

但是我的代码没有找到必需的字符串。另一方面,如果我删除'插入符号'符号(^),它的工作原理。这不是一个解决方案,因为我想确保从线路中获取真正以该词开头的数据。

更新 实际上'\ n'对我来说真的是新的一行,尽管单引号。例如

WScript.Echo("out=" + out);

产生

out=#Path to the database root
datadir="C:/Program Files/MySQL/MySQL Server 5.0/Data/"
blah-blah-blah-blah-blah

我做错了什么?

1 个答案:

答案 0 :(得分:2)

A ^ boundary通常锚定到整个输入字符串的开头而不是每条单独行的开头。

m flag可用于锚定每一行:

var re = new RegExp('^datadir="(.*)"', 'gm');

示例:http://jsfiddle.net/PjLd4/