我有一个连接的javascript字符串,我需要解析并匹配“& mediaID = 334380”,只要它在字符串中。我需要能够找到“& mediaID =”,然后写出=后面的数字,并将其结束于“
这个连续的var中只有一个“& 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,该怎么办?有没有办法在一个正则表达式中匹配两者?
谢谢。
答案 0 :(得分:0)
如果你确定它后面会跟一个&符号,你可以使用正则表达式找到它。
像&mediaID=(\d+)&
这样的模式应该足够了。然后您的号码将存储在捕获组中。
答案 1 :(得分:0)
正则表达式是这里的方式。
在您的控制台中尝试此操作:
"asdasdasdasdasd&mediaID=645654654&asdasdasdasd=asdasdasdasdasd".match(/&mediaID=[0-9]+/)
此外,如果您想要分开编号,可以使用
"asdasdasdasdasd&mediaID=645654654&asdasdasdasd=asdasdasdasdasd".match(/&mediaID=([0-9]+)/)
[0-9] +表示从0到9的任何数字,至少出现一次。如果你将它包装在括号中,它会将它存储在响应中(顺便说一下,这是一个数组)。
如果有任何其他疑问,请告诉我。干杯!
答案 2 :(得分:0)
这应该有效:
var number = str.match(/&mediaId=(\d+)/)[1];