gpt4 book ai didi

用于捕获圆括号中变量的 Javascript 正则表达式

转载 作者:行者123 更新时间:2023-11-29 14:47:40 26 4
gpt4 key购买 nike

我有一个字符串被输入到 JavaScript 函数中,我需要从中提取变量。

var str = "heres:a:func('var1', 'var2', 'var3', 2)"

我越来越接近了,但我想用一个正则表达式来完成。

str.match(/\((.*)\)/)[1].split(/\s*,\s*/)

结果应该是这样的:

['var1', 'var2', 'var3', 2]

最佳答案

这是一种方法:

Regex101 Link

顺便说一句,这不包括引号,您可以根据需要随意添加。

var pattern = /(\w+)(?!.*\()(?=.*\))/g;
var str = "heres:a:func('var1', 'var2', 'var3', 2)";
var matches = str.match(pattern);
console.log(matches); //['var1','var2','var3','2']

这基本上是搜索一个单词字符组,然后进行负向和正向前瞻。
基本上

(?!.*\() 

说我希望它不在任何数量的字符前加一个 ( 字符和

(?=.*\)) 

说我希望它位于任意数量的字符和 ) 字符之前。

然后捕获组在开头,所以如果你想保留引号(我认为你不会这样做),你可以用 ([\'\w]+) 替换 (\w+)


编辑:要在字符串中包含空格,您可以这样做:

var pattern = /([\w]+\s[\w]+|\w+)(?!.*\()(?=.*\))/g

但这不会捕获尾随空格,只会捕获由 2 种单词类型 (a-Z0-1) 包围的空格。此外,这只允许单词中有 1 个空格,所以如果你需要多个空格,你也必须检查它。您可以修改它以检查任意数量的单词字符或 2 个有效单词字符之间的空格。

对于多个空间:

var pattern = /([\w]+[\s\w]*[\w]+|\w+)(?!.*\()(?=.*\))/g

包括 1 个空格:Regex101 Link

包括多个空格:Regex101 Link

编辑2:
最后一点,如果你真的想在整个过程中添加一堆空格,你可以这样做:

包括多个空格,多次:Regex101 Link

/([\w]+[\s\w]+[\w]+|\w+)(?!.*\()(?=.*\))/g

关于用于捕获圆括号中变量的 Javascript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30712368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com