我希望将我的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}
前面进行补偿。
谢谢!
答案 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”标志指示全局搜索时才设置此属性。