我想通过修改来自另一个RegExp
对象的模式来创建一个新的RegExp
对象。
RegExp.prototype.toString()
的输出包括前导和尾部斜杠。
// This is nice and clean, but produces incorrect output.
function addBarWrong(re) {
return new RegExp(re+"bar");
}
addBarWrong(new RegExp("foo")); // -> /\/foo\/bar/
我天真的做法非常不优雅。
// This is unpleasant to look at, but produces correct output.
function addBarUgly(re) {
var reString = re.toString();
reString = reString.substr(1, reString.length - 2);
return new RegExp(reString+"bar");
}
addBarUgly(new RegExp("foo")); // -> /foobar/
肯定有更好的方法。这里干净的解决方案是什么?
答案 0 :(得分:5)
使用source
(Luke)属性。
function addBarElegant(re) {
var reString = re.source;
return new RegExp(reString + "bar");
}
console.log(addBarElegant(/foo/));