【问题标题】:JS: Remove all text to the left of certain last character with RegexJS:使用正则表达式删除某个最后一个字符左侧的所有文本
【发布时间】:2020-01-05 12:32:04
【问题描述】:

我正在尝试删除位于正则表达式模式中最后一个字符之前的所有文本。

例子:

rom.com/run/login.php

变成:

login.php

我将如何在 JavaScript 中执行此操作?我是正则表达式的新手。

【问题讨论】:

  • 你真的需要使用正则表达式吗,或者这是你对“最简单”的假设?

标签: javascript node.js regex npm substring


【解决方案1】:

您可以通过搜索文字字符串(实际上只有一个字符)来获得所需的结果,因此无需使用会降低性能的正则表达式。

您可以将输入拆分为以/ 分隔的块并获取最后一个块:

var input = 'rom.com/run/login.php';
var result = input.split('/').pop();

或者找到输入中最后一次出现/的位置,并得到该位置后面的字符串的其余部分:

var input = 'rom.com/run/login.php';
var result = input.substring(input.lastIndexOf('/') + 1);

【讨论】:

    【解决方案2】:

    要获取最后一个斜线之后的所有内容,请使用[^\/]+$

    const str = "rom.com/run/login.php";
    
    console.log(str.match(/[^/]+$/)[0]);

    【讨论】:

    • 小点:斜线在字符类中不需要转义,所以/[^/]+$/就可以了。
    【解决方案3】:

    一种方法是正则表达式替换:

    var path = "rom.com/run/login.php";
    var output = path.replace(/^.*\//, "");
    console.log(output);

    正则表达式模式^.*/ 是贪婪,并且会消耗直到(包括)最后一个路径分隔符的所有内容。然后,我们将这个匹配替换为空字符串,以有效地删除它。

    【讨论】:

      【解决方案4】:

      你可以像这样使用正则表达式:

      var url = 'rom.com/run/login.php'
      var page = url.match('^.*/(.*)')[1]
      console.log(page)

      或者你可以像这样不使用正则表达式:

      var url = 'rom.com/run/login.php'
      var split = url.split('/')
      var page = split[split.length-1]
      console.log(page)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-28
        • 1970-01-01
        • 2019-03-21
        • 2020-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多