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
,而不会匹配字符串的其余部分…我相信你是对的,请忽略不计。我刚刚因为使用(?:…)
不必要地进行替换而被训斥。工作起来很有魅力。我以前在谷歌搜索中看到过?:
,但不知道它会删除匹配项。谢谢!