【问题标题】:Parsing a concatenating javascript string解析连接的 javascript 字符串
【发布时间】:2023-03-08 18:46:01
【问题描述】:

我有一个连接的 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,该怎么办。有没有办法在一个正则表达式中同时匹配两者?

谢谢。

【问题讨论】:

  • 您能否展示您正在使用的完整字符串或示例?
  • 考虑使用正则表达式。

标签: javascript parsing variables concatenation split


【解决方案1】:

正则表达式是这里的方法。

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

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

另外,如果你想要单独的数字,你可以使用

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

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

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

【讨论】:

  • 太棒了!非常感谢所有回复的人。看起来 .match 与一些正则表达式是要走的路。我一直在玩弄它,但就是无法得到它。谢谢!
  • 如果 mediaID 在 ID 之前可能有也可能没有 _ 怎么办,例如 media_ID 和 mediaID。有没有办法在一个正则表达式中同时匹配两者?
  • 当然! "asdasdasdasdasd&media_ID=645654654&asdasdasdasd=asdasdasdasdasd".match(/&media_?ID=[0-9]+/) _?表示 _ 是可选的。此外,如果您需要匹配多个,则应添加“g”作为全局修饰符,例如 /REGEX/g,并添加“i”用于区分大小写的匹配。
  • 当我在控制台中运行它时,它会为我返回“null”。
  • ID 部分也是唯一可以是小写或大写的部分。这 (/&media_‌​?ID=[0-9]+/i) 会是正确的正则表达式吗?非常感谢。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    这应该可行:

    var number = str.match(/&mediaId=(\d+)/)[1];
    

    【讨论】:

      猜你喜欢
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 2016-09-20
      • 2018-02-26
      • 1970-01-01
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多