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" 部分。随后的匹配是参数值对。
我正在制作一个包含多个 '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" 部分。随后的匹配是参数值对。