0

window.location.search 在哪里

?foo=myFoo&fooAndBar=myFoo%26Bar;bar=myBar

哪个正则表达式会在其查询分隔符处正确拆分字符串?请注意,和号 ( &) 和分号 ( ;) 都是有效的分隔符

样品用途:

// slice() is used just to trim the leading "?"
window.location.search.slice(1).split(/ _WORKING_REGEX_ /);

>>> [object Array]:

    [0] => "foo=myFoo",
    [1] => "fooAndBar=myFoo&Bar",
    [2] => "bar=myBar"

我找到了与符号的正确匹配,但不是分号:

/&(?!\w+;)/

编辑: TJ Crowder 指出我的错误是在原始 URL 编码中&用作转义的 & 符号,它会被正确编码为%26. 鉴于此,正确的 RegEx 更容易匹配

window.location.search.slice(1).split(/[&;]/)

这是我在更正之前发布的原始测试网址以供参考:

?foo=myFoo&fooAndBar=myFoo&Bar;bar=myBar
4

2 回答 2

1

请注意,与号 (&) 和分号 (;) 都是有效的分隔符。

所以,嗯:

var pairs = queryString.split(/[;&]/);

?

或者,在开始时处理潜力?

var pairs = queryString.replace(/^\??/, '').split(/[;&]/);
于 2013-10-09T21:21:44.217 回答
1

这似乎有效:

"?foo=myFoo&fooAndBar=myFoo&Bar;bar=myBar".match(/(&\w+;|[^&;])+/g)
> ["?foo=myFoo", "fooAndBar=myFoo&Bar", "bar=myBar"]

&\w+;匹配实体非常幼稚,但你明白了。

于 2013-10-09T21:26:56.897 回答