如何修改JavaScript RegExp模式

时间:2018-04-05 00:07:39

标签: javascript regex

我想通过修改来自另一个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/

肯定有更好的方法。这里干净的解决方案是什么?

1 个答案:

答案 0 :(得分:5)

使用source(Luke)属性。



function addBarElegant(re) {
  var reString = re.source;
  return new RegExp(reString + "bar");
}
console.log(addBarElegant(/foo/));