Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS regex匹配没有backref的单词选项_Javascript_Regex - Fatal编程技术网

Javascript JS regex匹配没有backref的单词选项

Javascript JS regex匹配没有backref的单词选项,javascript,regex,Javascript,Regex,假设我有: /(private|public|protected)\s+function\s+(\w+)\((.*)\)\s+{/gi 匹配函数声明的开头。我不想使用(private | public | protected),因为(和)用作反向引用,但我不能使用[和],因为它们与全文不匹配 基本上,我只希望函数名为$1,参数为$2 谢谢大家 **编辑** 根据答案,我使用了?: 例如,/(?:private | public | protected)\s+函数\s+(\w+)\(.*)\s+

假设我有:

/(private|public|protected)\s+function\s+(\w+)\((.*)\)\s+{/gi
匹配函数声明的开头。我不想使用
(private | public | protected)
,因为
用作反向引用,但我不能使用
[
]
,因为它们与全文不匹配

基本上,我只希望函数名为
$1
,参数为
$2

谢谢大家

**编辑**

根据答案,我使用了
?:


例如,
/(?:private | public | protected)\s+函数\s+(\w+)\(.*)\s+{/

您可以使用非捕获组:

(?: ... )
从:

(?:x)
匹配
'x'
,但不记得匹配项。这些被称为非捕获括号。无法从结果数组的元素中调用匹配的子字符串
[1],…,[n]


@T.J.Crowder:这似乎与函数名匹配。
\(.*)
与参数匹配。@T.J.Crowder:我不确定我是否理解。如果省略括号,则例如
公共函数foo(){}
只会匹配
public
,而不会匹配字符串的其余部分…我相信你是对的,请忽略不计。我刚刚因为使用
(?:…)
不必要地进行替换而被训斥。工作起来很有魅力。我以前在谷歌搜索中看到过
?:
,但不知道它会删除匹配项。谢谢!