Javascript JS RegExp捕获未后跟括号的单词

Javascript JS RegExp捕获未后跟括号的单词,javascript,regex,matching,Javascript,Regex,Matching,我试图找到一个正则表达式来匹配不是函数开头的单词。 因此,它应该匹配所有内容,而不是后面有一个开口括号 文本后面的something也不应该放在结果的[0]-元素中。所以对于一个测试字符串,结束不应该是匹配组的一部分,这就是为什么像^[a-zA-Z][\w-]*\s |$\124; \\ 124;这样的东西不起作用 另一个问题是,函数名可能包含一个破折号,因此为[\w-]* 我的第一次尝试: 新的RegExp/^[a-zA-Z][\w-]*\/ 这将匹配除单词最后一个字符以外的所有字符,因此测试

我试图找到一个正则表达式来匹配不是函数开头的单词。 因此,它应该匹配所有内容,而不是后面有一个开口括号

文本后面的something也不应该放在结果的[0]-元素中。所以对于一个测试字符串,结束不应该是匹配组的一部分,这就是为什么像^[a-zA-Z][\w-]*\s |$\124; \\ 124;这样的东西不起作用

另一个问题是,函数名可能包含一个破折号,因此为[\w-]*

我的第一次尝试: 新的RegExp/^[a-zA-Z][\w-]*\/

这将匹配除单词最后一个字符以外的所有字符,因此测试中的tes

下一次尝试是:new RegExp/^[a-zA-Z][\w-]*\\b/

这不会匹配test之类的内容,但会匹配get-from-get-border,因为-是一个断字字符

我想我需要的是\b不是a-,但不是捕获它

举几个例子来说明我想要实现的目标:

foo->null arg->arg foo-bar->null arg->arg 这个问题的动机是:我想将像foobarargument这样的文本拆分为一个标记列表:['foo','bar','argument',],给定正则表达式函数\u START,argument 伪码:

while (line.length > 0) {
  regExp.some(r => {
    const match = line.match(r);
    if (match) {
      tokens.push(...);
      line = line.replace(r, '').trim();

      return true;
    }

    return false;
  });
}

不应依赖于正则表达式的顺序。

您可以使用表达式:

^[a-zA-Z]+(?=\)|$)
^断言行的开头。 [a-zA-Z]+字母字符,小写和大写,一个或多个。 ?=\\\$正向前瞻,匹配右括号或行尾$。
你可以现场测试正则表达式。

你的意思是^[a-z]+?=\\\\\;$?查看foobarargument.match/[a-zA-Z][\w-]*\\\\\124;[a-zA-Z][\w-]*?=\\\\\\\/g如何?我建议添加a\b,甚至在开始括号之前出现一些可选空格时拒绝:。这就是你想要的吗?谢谢你@无法忍受的光明-积极的前瞻是一个聪明的想法!似乎通过了我当前的所有测试用例。@卡巴达斯:不客气,很乐意帮忙。我做了一些小修改,因为[a-zA-Z]an在我的用例中也包含数字、下划线和破折号。也可以用任何空格或逗号来表示。我当前使用的最后一个RegExp如下所示:/^[a-zA-Z][\w-]*?=\ \ \ \,\s\$/。但老实说,它背后的整个技巧是使用积极的前瞻,而不是消极的前瞻。