我认为自己善于理解正则表达式; 这是第一次,我被困了,最后20分钟的谷歌搜索/搜索SO的答案没有产生任何结果.
考虑字符串:
var string = "Friends of mine are from France and they love to frolic."
我想替换或捕获(或做某事)每次出现"fr"(不区分大小写).
我可以使用,简单地说:
var replaced = string.replace(/fr/gi);
但是,如果我想忽略第一次出现的"fr"怎么办?通常我会使用积极的lookbehind(例如,(?<=.)fr
在php中)来做这个,但我们的朋友javascript不这样做.如果没有安装第三方库,有没有办法确保我的表达式在行首不匹配?
更新:虽然有替换捕获的方法$1
,我的特定用例就split()
在这里,并且如果我使用类似@Explosion Pills的建议,则需要修复阵列string.replace(/^(fr)|fr/gi, "$1");
你可以走最小阻力的路径并使用捕获/交替:
string.replace(/^(fr)|fr/gi, "$1");
string.split(/(?!^)fr/gi);
这让你失望 ["Friends of mine are ", "om ", "ance and they love to ", "olic."]