如何制作以下JavaScript
'id=d41c14fb-1d42&'.match(/(?![id=])(.*)[^&]/)[0]
返回“d41c14fb-1d42”?它目前返回“41c14fb-1d42”,没有开头“d”。
答案 0 :(得分:0)
这应该这样做:
'id=d41c14fb-1d42&'.match(/^id=(.*)&$/)[1]
// "d41c14fb-1d42"
〜编辑
当原始问题没有提供任何上下文时,很难猜测出你需要什么,在这种情况下,我只提供一个产生请求输出的解决方案。我现在明白你希望能够解析一个查询字符串,即name1=value1&name2=value2...
。以下正则表达式产生nameX
后跟可选的=valueX
,因为我认为只在查询字符串中提供没有值的参数是有效的。
var parameters = "id=foobar&empty&p1=javascript&p2=so".match(/\w+(=([^&]+))?/g)
// ["id=foobar", "empty", "p1=javascript", "p2=so"]
您可以拆分“=”分别获取参数和值。
var param1 = parameters[0].split("=")
// ["id", "foobar"]
对于没有值的参数,当然只会产生具有1值的数组。
"empty".split("=") // ["empty"]
请注意,这假设查询参数与\w+
匹配,如果在其他情况下您必须展开正则表达式。
如果您只想在查询字符串中的任何位置专门匹配id
参数并获取其值,正如我从下面的评论中推断出的那样,您可以使用:
"id=donald".match(/(?:^|&)id=([^&]+)/)[1]
// "donald"
"param1=value1&id=donald¶m2=value2".match(/(?:^|&)id=([^&]+)/)[1]
// "donald"