javascript 用于使用锚点进行查询的正则表达式

javascript regex for querysting with anchor

我正在制作一个包含多个 'pages' 的网络应用程序,但它们都将在客户端加载。看起来它在技术上是如何在同一页面上的,我将在 # 之后使用参数来跟踪当前页面状态,同时防止回发。我的问题是我似乎无法 select 使用正则表达式行的所有参数。拆分正则表达式在我使用在线测试工具时有效,但在我的网页上使用时无效。

//Test data for url
//https://test.ca?hi&hey=3&test=oh+hi+mark#edit&e=1

var split = /([^&#=]+)=?([^&#]*)/g;
var url = window.location.href;
var match = split.exec(url);

//this outputs match with a length of three 
//[0] = 'https://test.ca?hi'
//[1] = 'https://test.ca?hi'
//[2] = ''

我认为这应该是一个已解决的问题,但我似乎找不到答案。我想这会引出另一个问题。我是不是用完全错误的方式来解决这个问题?

请尝试使用 window.location.hash。它将 return 哈希值(在您的示例中 url 它将是 #edit&e=1)并且您可以使用字符串操作来做任何您需要的事情。

您使用的正则表达式有误。您只需打印整个匹配项,而您需要访问捕获的组,同时遍历 1 个字符串中的所有匹配项。

这是一个示例片段:

var re = /([^&#=]+)=?([^&#]*)/g; 
var str = 'https://test.ca?hi&hey=3&test=oh+hi+mark#edit&e=1';
var match;
 
while ((match = re.exec(str)) !== null) {
    document.write(match[1] + "<br/>" + match[2] + "<br/><br/>");
}

请注意,第一个匹配项是 URL 的 "main" 部分。随后的匹配是参数值对。