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

杰弗里·亨特(Jeffrey Hunter)

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

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

我越来越近了,但是想用一个正则表达式来做。

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

结果应如下所示:

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

这是一种实现方法:

Regex101链接

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

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']

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

(?!.*\() 

说,我希望此代码不要出现在任意数量的字符加上(

(?=.*\)) 

说我想在任何数量的字符和a字符之前输入。

然后捕获组才是开头,因此如果您想保留引号,可以将(\ 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链接

包含多个空格:Regex101链接

Edit2:
最后,如果您真的想在整个过程中添加一堆空格,则可以执行以下操作:

包含多个空间,多次:Regex101链接

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章