将RegEx转换回字符串

时间:2014-01-29 14:48:32

标签: javascript regex string replace indexing

我希望将我的RegExp作为字符串返回:

var test = RegExp("[a-z]{5}");
// want "[a-z]{5}" or even "/[a-z]{5}/" as a string

使用toString返回"[object Object]"

更多背景信息:

我有一些存储的RegExp模式,我用它来搜索一个非常大的字符串。某些指数不应该发生匹配,由相当复杂的数学方程确定。运行string.replace(test, function)后,我根据我的方程测试匹配的索引,如果是不允许的索引,我想重新运行替换,除了从下一个索引开始。由于javascript中的string.replace不接受索引参数,因此我想接受我的RegExp,并在*{firstIndexWeFound + 1}前面进行补偿。

谢谢!

2 个答案:

答案 0 :(得分:2)

使用source属性:

var test = RegExp("[a-z]{5}");
var pattern = test.source; // returns "[a-z]{5}"

答案 1 :(得分:1)

不是在每次匹配后调整正则表达式并制作新的正则表达式,而是设置正则表达式的lastIndex property更好:

test.lastIndex = someIndex;

根据文件:

  

lastIndex是正则表达式的读/写整数属性   指定开始下一场比赛的索引。

PS:仅当正则表达式使用“g”标志指示全局搜索时才设置此属性。