Javascript正则表达式找到一个字符串并从整个字符串中提取它

问题描述 投票:1回答:4

我有一个字符串的Javascript数组,其中包含以下网址:

http://www.example.com.tr/?first=DSPN47ZTE1BGMR&second=NECEFT8RYD
http://www.example.com.tr/?first=RTR22414242144&second=YUUSADASFF
http://www.example.com.tr/?first=KOSDFASEWQESAS&second=VERERQWWFA
http://www.example.com.tr/?first=POLUJYUSD41234&second=13F241DASD
http://www.example.com.tr/?first=54SADFD14242RD&second=TYY42412DD

我想从这些网址中提取“第一个”查询参数值。

我的意思是我需要值DSPN47ZTE1BGMR,RTR22414242144,KOSDFASEWQESAS,POLUJYUSD41234,54SADFD14242RD

因为我使用正则表达式并不好,所以我找不到从数组中提取这些值的方法。任何帮助将不胜感激

javascript regex string match
4个回答
4
投票

而不是使用正则表达式,为什么不只是从字符串中创建一个URL对象并原生地提取参数?

let url = new URL("http://www.example.com.tr/?first=54SADFD14242RD&second=TYY42412DD");
console.log(url.searchParams.get("first")); // -> "54SADFD14242RD"

如果您不知道第一个参数的名称,仍可以使用URL构造函数手动搜索查询字符串。

let url = new URL("http://www.example.com.tr/?first=54SADFD14242RD&second=TYY42412DD");
console.log(url.search.match(/\?([^&$]+)/)[1]); // -> "54SADFD14242RD"

搜索索引表示参数的位置(索引0是整个匹配的字符串)。请注意,.match返回null没有匹配,因此如果URL中没有参数,上面的代码将引发错误。


3
投票

是否必须使用正则表达式?会像以下工作:

var x = 'http://www.example.com.tr/?first=DSPN47ZTE1BGMR&second=NECEFT8RYD';
x.split('?first=')[1].split('&second')[0];

2
投票

试试这个正则表达式:

first=([^&]*)

捕获第1组的内容

Click for Demo

Code

说明:

  • first= - 匹配first=
  • qazxsw poi - 匹配任何不是qazxsw poi的角色的0+次出现并将其存储在第1组中

2
投票

您可以使用

([^&]*)
  • & - 正面看起来与(?<=\?first=)[^&]+? 相匹配
  • (?<=\?first=) - 匹配任何字符到?first=(懒惰模式)

[^&]+?

如果没有积极的眼光,你会喜欢这样

&
© www.soinside.com 2019 - 2024. All rights reserved.