javascript - 用同一行开头的匹配项替换一行中的所有斜杠

标签 javascript regex regexp-replace regexp-substr

我正在尝试更改一行中的所有斜线,以替换为每行开头的 3 个字符 block 。 (下面示例中的 PMC、PAJ 等)

.PMC.89569XX/90051XX/90204XX/89533XX/90554XX/90053XX/90215XX/89874XX/89974XX/90481XX/90221XX/90508XX/90183XX/88526XX/89843XX/XX99516XX/804416XX/90843XX/884416XX/9/89847XX/88616XX/90513XX/90015XX/90334XX/89649XX.T00
.PAJ.77998XX/77896XX.T00 .PAG.78116XX/78104XX/77682XX/07616XX/77663XX/77863XX/07634XX/78088XX/77746XX/78148XX.T00 .PKC.22762XX/22358XX/22055XX/22672XX/22684XX/22154XX/22608XX/22768XX/22632XX/22266XX/22714XX/22658XX/22631XX/22288XX/22020XX/22735XX/22269XX/22138XX/22331XX/22387XX/22070XX/22636XX/22629XX/22487XX/22725XX.T00

期望的结果应该是:

PMC.89569XXPMC90051XXPMC90204XXPMC89533XXPMC90554XXPMC90053XXPMC90215XXPMC89874XXPMC89974XXPMC90481XXPMC90221XXPMC90508XXPMC90183XXPMC88526XXPMC89843XXPMC88041XXPMC90446XXPMC88515XXPMC89574XXPMC89847XXPMC88616XXPMC90513XXPMC90015XXPMC90334XXPMC89649XX.T00

我不确定如何完成此操作。 这是我目前所拥有的:

 (.)([A-Z]{3})(.)(\/)

最佳答案

如果您只打算支持 ECMAScript 2018 及更新版本,您可以使用单个正则表达式实现所需的功能:

.replace(/(?<=^\.([^.]+)\..*?)\//g, "$1")

参见 regex demo .

详情

  • (?<=^\.([^.]+)\..*?) - 在当前位置的左侧立即进行正面观察,需要
    • ^ - 字符串开始
    • \. - 一个点
    • ([^.]+) - 第 1 组:除点之外的一个或多个字符
    • \. - 一个点
    • .*? - 任何 0+ 个字符,除换行字符外,尽可能少
  • \/ - 一个 /字符。

JS 演示:

var strs = ['.PMC.89569XX/90051XX/90204XX/89533XX/90554XX/90053XX/90215XX/89874XX/89974XX/90481XX/90221XX/90508XX/90183XX/88526XX/89843XX/88041XX/90446XX/88515XX/89574XX/89847XX/88616XX/90513XX/90015XX/90334XX/89649XX.T00','.PAJ.77998XX/77896XX.T00','.PAG.78116XX/78104XX/77682XX/07616XX/77663XX/77863XX/07634XX/78088XX/77746XX/78148XX.T00','.PKC.22762XX/22358XX/22055XX/22672XX/22684XX/22154XX/22608XX/22768XX/22632XX/22266XX/22714XX/22658XX/22631XX/22288XX/22020XX/22735XX/22269XX/22138XX/22331XX/22387XX/22070XX/22636XX/22629XX/22487XX/22725XX.T00'];
for (var s of strs) {
 console.log(s.replace(/(?<=^\.([^.]+)\..*?)\//g, "$1"));
}

关于javascript - 用同一行开头的匹配项替换一行中的所有斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53904952/

相关文章:

javascript - GmailApp、getDate 和排序

javascript - Meteor 订阅数据未显示在 Chrome 控制台中

Java 正则表达式 - 字母数字,最多一个连字符,句点或下划线,七个字符长

c# - 如何在C#字符串中将上标字符转换为普通文本

scala - 如何在Spark中使用Regexp_replace

javascript - 左侧为粘性侧边栏,右侧为可滚动内容的布局

javascript - 如何使用 Three.js 以等距离的 10 x 10 方式显示立方体?

php - Codeigniter - if 语句中的正则表达式?

c# - 正则表达式获取大括号之间的文本,偶尔缺少大括号

sql - 如何只替换Oracle中的某部分文本?