【问题标题】:Regex remove all string start with special character正则表达式删除所有以特殊字符开头的字符串
【发布时间】:2018-06-08 09:11:46
【问题描述】:

我有一个字符串看起来像:

var str = https://sharengay.com/movie13.m3u8?pid=144.21.112.0&tcp=none

我想在开始时删除?pid= 以结束。结果如下:

var str = https://sharengay.com/movie13.m3u8

我尝试过:

str = str.replace(/^(?:?pid=)+/g, "");

但它显示如下错误:

无效的正则表达式:/^(?:?pid=)+/: 没有可重复的

【问题讨论】:

  • 看看这个stackoverflow.com/questions/14988021/… 你应该看到你的jwplayer问题。如果您对 jwplayer 有疑问,请编辑您的问题或创建一个新问题,不要在每个答案下都写下它
  • 我在提问之前发现了这个。这不能解决我的问题。

标签: javascript regex


【解决方案1】:

你可以简单地使用split(),我认为这很简单。

var str = "https://sharengay.com/movie13.m3u8?pid=144.21.112.0&tcp=none";
str = str.split("?pid");
console.log(str[0]);

【讨论】:

    【解决方案2】:

    如果您真的想在字符串级别使用正则表达式执行此操作,只需将 /\?pid=.*$/ 替换为 "":

    str = str.replace(/\?pid=.*$/, "");
    

    这匹配 ?pid= 及其后面的所有内容 (.*) 到字符串末尾 ($)。

    现场示例:

    var str = "https://sharengay.com/movie13.m3u8?pid=144.21.112.0&tcp=none";
    str = str.replace(/\?pid=.*$/, "");
    console.log(str);

    【讨论】:

      【解决方案3】:

      您可以创建一个 URL 对象并将origin 和pathname 连接起来:

      var str = "https://sharengay.com/movie13.m3u8?pid=144.21.112.0&tcp=none";
      
      var url = new URL(str);
      console.log(url.origin + url.pathname);

      【讨论】:

      • 我用jwplayer播放m3u8文件。我尝试在播放器中添加如下网址:“ne.hdonline.vn/d6a1dd9bcae0baa82aa51eab9ac95d43/s6/012018/01/...; 无法正常工作,您能提出任何解决方案吗?
      • @vanloc -- 脚本是否在 IE 中运行?
      • 没有。它仅适用于 Chrome 和 Firefox 最新版本。我不需要它在 IE 中工作。我的代码如下: options.file = obj["file"].replace(/\?pi=.*$/, ""); jwplayer('my_video').setup(options);
      【解决方案4】:

      你可以使用split

      var str = "https://sharengay.com/movie13.m3u8?pid=144.21.112.0&tcp=none"
      var result = str.split("?pid=")[0];
      console.log(result);

      【讨论】:

        【解决方案5】:

        您必须转义?,如果您想从该点删除所有内容,您还需要.+:

         str = str.replace(/\?pid=.+$/, "")
        

        【讨论】:

        • 似乎重复的答案。
        • 很巧合,虽然没有很多不同的方法可以解决这个问题
        【解决方案6】:

        您可以使用 split 函数只获取没有查询字符串的 url。

        这是一个例子。

        var str = 'https://sharengay.com/movie13.m3u8?pid=144.21.112.0&tcp=none';

        var data = str.split("?");

        警报(数据[0]);

        【讨论】:

          猜你喜欢
          • 2011-03-19
          • 2014-01-10
          • 1970-01-01
          • 1970-01-01
          • 2016-05-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多