|
165
|
| Adam Franco · 技术社区 · 17 年前 |
|
1
170
从评论中提升
此处列出了浏览器支持 https://caniuse.com/#feat=urlsearchparams
我建议使用另一种正则表达式,使用子组单独捕获参数的名称和值
{
f: "q"
geocode: ""
hl: "de"
ie: "UTF8"
iwloc: "addr"
ll: "50.116616,8.680573"
q: "Frankfurt am Main"
sll: "50.106047,8.679886"
source: "s_q"
spn: "0.35972,0.833588"
sspn: "0.370369,0.833588"
z: "11"
}
正则表达式分解如下: (?: # non-capturing group
\?|& # "?" or "&"
(?:amp;)? # (allow "&", for wrongly HTML-encoded URLs)
) # end non-capturing group
( # group 1
[^=]+ # any character except "=", "&" or "#"; at least once
) # end group 1 - this will be the parameter's name
(?: # non-capturing group
=? # an "=", optional
( # group 2
[^]* # any character except "&" or "#"; any number of times
) # end group 2 - this will be the parameter's value
) # end non-capturing group
|
|
|
2
68
您需要使用“g”开关进行全局搜索
|
|
3
40
2020年编辑 使用 URLSearchParams ,因为此作业不再需要任何自定义代码。浏览器可以使用单个构造函数为您完成此操作:
产生
因此,没有理由再使用正则表达式了。 原始答案
如果你不想依赖跑步带来的“盲配”
完成。 我们不使用捕获组处理函数来实际返回替换字符串(对于替换处理,第一个参数是完整的模式匹配,后续的参数是单独的捕获组),而是简单地获取组2和3的捕获,并缓存该对。 因此,与其编写复杂的解析函数,不如记住JavaScript中的“matchAll”函数只是用替换处理程序函数“替换”,这样可以提高模式匹配效率。 |
|
|
4
21
对于捕捉群组,我习惯于使用
|
|
|
5
14
设置
|
|
|
6
12
来源:
查找连续匹配项如果你的正则表达式使用了“g”标志,你可以多次使用exec()方法来查找同一字符串中的连续匹配项。当你这样做时,搜索将从正则表达式的lastIndex属性指定的str子字符串开始(test()也将推进lastIndex属性)。例如,假设您有以下脚本:
此脚本显示以下文本:
注意:不要将正则表达式文字(或RegExp构造函数)放在while条件中,否则如果每次迭代时都重置lastIndex属性,导致匹配,它将创建一个无限循环。还要确保设置了全局标志,否则这里也会发生循环。 |
|
7
4
2020年的Hllo。让我来 String.prototype.matchAll() 请注意:
输出:
|
|
|
8
2
如果有人(像我一样)需要Tomalak的带数组支持的方法(即多选),它是:
输入
后果
|
|
|
9
1
为了坚持标题所指示的拟议问题,您实际上可以使用以下命令迭代字符串中的每个匹配
如果我想获得捕获组,甚至每场比赛的索引,我也可以这样做。以下显示了如何返回每个匹配以及整个匹配、第一个捕获组和索引:
在运行上述程序之后,
为了匹配与PHP中可用的类似的多个事件,请使用
|
|
|
10
1
如果你能逃脱使用
不漂亮,效率不高,但至少它很紧凑。 ;) |
|
|
11
1
使用
|
|
|
12
0
为了使用相同的名称捕获多个参数,我修改了Tomalak方法中的while循环,如下所示:
输入:
返回:
|
|
13
0
好。..我也有类似的问题。.. 我想用RegExp进行增量/步进搜索 (例如:开始搜索…做一些处理…继续搜索直到最后一个匹配) 经过大量的互联网搜索。..像往常一样(现在这已经成为一种习惯了) 我最终在StackOverflow找到了答案。..
未提及的事项是“
|
|
|
14
0
在我看来,拆分它是最好的选择:
|
|
15
0
为了避免正则表达式地狱,你可以找到你的第一个匹配,切掉一个块,然后尝试在子字符串上找到下一个。在C#中,这看起来像这样,很抱歉我没有为你将其移植到JavaScript中。
|
|
|
code-geek · Jquery根据单选按钮选择隐藏或显示文本字段 1 年前 |
|
|
Alex · 在轻量级中同时解构和不解构变量 1 年前 |
|
|
Ângelo Rigo · ReactJS映射:如何迭代[关闭] 1 年前 |
|
|
bairog · 从按属性筛选的对象数组字典中创建值数组 1 年前 |
|
|
lokiuucx · JS对象属性返回未定义,尽管对象属性应该有值 1 年前 |