简单的正则表达式问题

Simple Regex question

本文关键字:问题 正则表达式 简单      更新时间:2023-09-26

我想从网址字符串中删除它 http://.....?page=1我知道这行不通,但我想知道你将如何正确地做到这一点。

document.URL.replace("?page=[0-9]", "")

谢谢

似乎您想摆脱协议和查询字符串。那么,仅连接其余部分怎么样?

var loc = window.location;
var str = loc.host + loc.pathname + loc.hash;

http://jsfiddle.net/9Ng3Z/


我不完全确定要求是什么,但这个相当简单的正则表达式有效。

loc.replace(/https?':'/'/([^?]+)('?|$)/,'$1');

这可能是一个幼稚的实现,但试一试,看看它是否符合您的需求。

http://jsfiddle.net/9Ng3Z/1/

?是一个正则表达式特殊字符。你需要转义它以获得字面上的?.还要使用正则表达式文本。

document.URL.replace(/'?page=[0-9]/, "")

来自 @patrick dw 的答案是最实用的,但如果你真的对正则表达式解决方案感到好奇,那么我会这样做:

var trimUrl = function(s) {
  var r=/^http:'/'/(.*?)'?page='d+.*$/, m=(""+s).match(r);
  return (m) ? m[1] : s;
}
trimUrl('http://foo.com/?page=123'); // => "foo.com/"
trimUrl('http://foo.com:8080/bar/?page=123'); // => "foo.com:8080/bar/"
trimUrl('foobar'); // => "foobar"

你离得很近。 要获取URL,请使用location.href并确保转义问号。

var URL = location.href.replace("''?page=[0-9]", ");location.href = URL;并重定向,如果这是您打算做的

还可以去除所有查询字符串参数:

var URL = location.href.replace("''?.*'", '"'");