1

我有一个连接的 javascript 字符串,我需要解析和匹配“&mediaID=334380”,无论它落在字符串中的哪个位置。我需要能够找到“&mediaID=”,然后写出 = 后面的数字并以“结束”

此连接变量中将只有一次“&mediaID=334380”实例,但它可能位于字符串的不同部分。

var vidPlyrVars = "vidPlayerSchool=" + vid_partner + "&vidPlayerWd=" + vid_width +      "&vidPlayerHt=" + vid_height + "&";
vidPlyrVars += "vidURL=" + vid_url + "&imgURL=" + img_url + "&color_button_bkg=0d141a" + "&color_controls_bkg=0d141a" + "&mediaID=334380" + "&share_buttons=on" + "&vip_url=http://somesite.com/all/index.html" + "&";
vidPlyrVars += "vidTitle=" + escape("some title") + "&";
vidPlyrVars += "autoplay=off&autoplay_refresh=always&full_screen=on&ad_prerolls=off&";
vidPlyrVars += "list_type=none&";

我只需要 &mediaID= 之后的数字,不管有多少数字。我尝试过拆分,但它不起作用,因为 &mediaID= 可能位于字符串中的不同位置。

*还。如果 mediaID 在 ID 之前可能有也可能没有 _,例如 media_ID 和 mediaID,该怎么办。有没有办法在一个正则表达式中同时匹配两者?

谢谢你。

4

3 回答 3

0

如果您确定它后面会跟一个 & 符号,您可以使用正则表达式来查找它。

像这样的模式&mediaID=(\d+)&就足够了。然后您的号码将存储在捕获组中。

http://www.javascriptkit.com/javatutors/redev2.shtml

于 2012-09-19T16:43:05.403 回答
0

正则表达式是要走的路。

在你的控制台中试试这个:

"asdasdasdasdasd&mediaID=645654654&asdasdasdasd=asdasdasdasdasd".match(/&mediaID=[0-9]+/)

另外,如果你想要单独的号码,你可以使用

"asdasdasdasdasd&mediaID=645654654&asdasdasdasd=asdasdasdasdasd".match(/&mediaID=([0-9]+)/)

[0-9]+ 表示从 0 到 9 的任何数字,至少出现一次。如果你用括号括起来,它会将它存储在响应中(顺便说一下,这是一个数组)。

如果还有其他疑问,请告诉我。干杯!

于 2012-09-19T16:43:54.963 回答
0

这应该有效:

var number = str.match(/&mediaId=(\d+)/)[1];
于 2012-09-19T16:44:25.727 回答