Javascript正则表达式匹配*不是*行首

 -起司Cheese- 发布于 2023-02-09 17:54

我认为自己善于理解正则表达式; 这是第一次,我被困了,最后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");

2 个回答
  • 你可以走最小阻力的路径并使用捕获/交替:

    string.replace(/^(fr)|fr/gi, "$1");
    

    2023-02-09 17:57 回答
  • string.split(/(?!^)fr/gi);
    

    这让你失望 ["Friends of mine are ", "om ", "ance and they love to ", "olic."]

    2023-02-09 17:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有