2015-05-15 99 views
3

In this regex,我需要匹配的结束词,用'(', ')'','开始。的Javascript正则表达式结尾字

正则表达式:

/[\(\),].*$/ 

例如,给定文本(aaa,bbb)ccc我需要获得)ccc。不过,它会返回整个文本。这个正则表达式有什么问题?

+0

只需使用正则表达式删除'\(' – jcubic

+0

使用此''/[\)].*$/。 。 – Manwal

回答

2

您可以使用:

'(aaa,bbb)ccc'.match(/[(),][^(),]+$/) 
//=> [")ccc"] 

[^(),]+否定模式任何字符,但在[^(),]任何所列相符。

问题的[(),].*$是它匹配非常第一(在输入和匹配直到结束。

+0

你为什么不逃避括号? – ps0604

+1

内部字符类括号或任何其他特殊元字符,例如点,'*'等不需要转义。 – anubhava

0

尝试this正则表达式:

/[(,)][^(,)]*$/ 
1

您也可以考虑使用捕获组,同时消耗的所有字符,直到达到第一个(),

.*([(),].*)$ 

.*会消耗尽可能多的字符因为它可以,然后在此字符类[(),]中的任何字符,然后其余的字符到最后。

)ccc值将存储在第1组:

var re = /.*([(),].*)$/; 
 
var str = '(aaa,bbb)ccc'; 
 
    
 
if ((m = re.exec(str)) !== null) { 
 
    document.getElementById("res").innerHTML = m[1]; 
 
}
<div id="res"/>

相关问题