从字符串构建 RegExp 时无法获得预期的输出
Failed to get expected output on building RegExp from a string
在casperjs(网页抓取依赖)中,我们不能将RegExp对象直接传递给网页上下文。因此,我需要将 regexp 作为字符串传递给网页上下文并在那里构建 RegExp。
var string = "(ABCD)";
var normalize = {
regexp: '/(\()(\w*)(\))/g',
newValue: ''
};
var newString = string.replace(new RegExp(normalize.regexp), normalize.newValue);
console.log(newString); -> It's printing "(ABCD)" instead of "ABCD"
关于我在获得 "ABCD" 的预期输出方面做错的任何建议?
由于您只能使用字符串,因此将模式定义为字符串(请记住转义每个反斜杠以获得正则表达式中的文字反斜杠)并从模式构建 RegExp
对象:
var normalize = {
regexp: '(\()(\w*)(\))',
newValue: ''
};
var newString = string.replace(new RegExp(normalize.regexp, "g"), normalize.newValue);
"g" 修饰符在 RegExp 构造函数中声明,而不是在 regexp
字符串模式中声明(因为 JS 正则表达式不支持内联修饰符)。
在casperjs(网页抓取依赖)中,我们不能将RegExp对象直接传递给网页上下文。因此,我需要将 regexp 作为字符串传递给网页上下文并在那里构建 RegExp。
var string = "(ABCD)";
var normalize = {
regexp: '/(\()(\w*)(\))/g',
newValue: ''
};
var newString = string.replace(new RegExp(normalize.regexp), normalize.newValue);
console.log(newString); -> It's printing "(ABCD)" instead of "ABCD"
关于我在获得 "ABCD" 的预期输出方面做错的任何建议?
由于您只能使用字符串,因此将模式定义为字符串(请记住转义每个反斜杠以获得正则表达式中的文字反斜杠)并从模式构建 RegExp
对象:
var normalize = {
regexp: '(\()(\w*)(\))',
newValue: ''
};
var newString = string.replace(new RegExp(normalize.regexp, "g"), normalize.newValue);
"g" 修饰符在 RegExp 构造函数中声明,而不是在 regexp
字符串模式中声明(因为 JS 正则表达式不支持内联修饰符)。