【问题标题】:Replace all text after special character替换特殊字符后的所有文本
【发布时间】:2012-10-15 21:24:26
【问题描述】:

例如,我有以下字符串

http://stackoverflow.com/questions/5518282/regex-to-find-all-text-after-delimited-string?3748374731

我想尝试使用正则表达式将所有项目放在? 之后 - 所以我只剩下原始 URL?

我正在尝试使用 javascript 来做到这一点?

【问题讨论】:

  • 您使用什么语言?我敢打赌有内置的 URI 解析器
  • 对不起 - javascript 是语言!
  • “放置所有物品”是什么意思?

标签: javascript regex string match


【解决方案1】:
var url="http://stackoverflow.com/questions/5518282/regex-to-find-all-text-after-delimited-string?3748374731";
var path=url.split("?")[0];

【讨论】:

  • 你和你的答案比我的更优雅!
  • 啊唯一的问题 - 你能做到,所以它总是最后一个吗?
  • @Andy 在这种情况下它不是第一个吗?
  • 嘘@Christophe 他不需要知道! ------ 抱歉,让我们度过了漫长的一天……
【解决方案2】:

试一试:

<? $string = 'http://stackoverflow.com/questions/5518282/regex-to-find-all-text-after-delimited-string?3748374731' ;
$string = substr ( $string , 0 , strpos ( $string , '?' ) ) ;
echo $string ;
?>

更新:javascript 吧?

几乎是一样的:

var string = 'http://stackoverflow.com/questions/5518282/regex-to-find-all-text-after-delimited-string?3748374731' ;
string = string.substr(0,string.search('?');

【讨论】:

    【解决方案3】:

    类似...

    function removeParams(url) {
        return url.substring(0, url.lastIndexOf('?'));
    }
    

    会起作用的。它将 url 的子字符串从 0 到最后一个问号出现并返回。

    【讨论】:

      【解决方案4】:

      你可以抓住 ? 之前的所有字符并忽略其余部分,假设?只出现一次(应该是这样,url中的?应该是url编码的)

      ^[^?]+
      

      ^ 从字符串的开头匹配。 [^?] 表示任何不是问号的东西。 + 表示上一个字符类 1 次或多次。

      你也可以

      var s = "http://stackoverflow.com/questions/5518282/regex-to-find-all-text-after-delimited-string?3748374731";
      var rawUrl = s.split("?")[0];
      

      【讨论】:

        【解决方案5】:

        document.location.origin+document.location.pathname

        【讨论】:

          猜你喜欢
          • 2023-02-07
          • 1970-01-01
          • 2012-11-06
          • 1970-01-01
          • 1970-01-01
          • 2017-08-18
          • 2019-08-31
          • 2023-03-12
          • 1970-01-01
          相关资源
          最近更新 更多