In this regex,我需要匹配以CONVERT(NVARCHAR, CONVERT(VARBINARY, '0x' + SUBSTRING(SUA.[USER_NAME], 3, LEN(SUA.[USER_NAME])), 1)) AS USER_NAME_TEXT
或'(', ')'
开头的结尾字词。
正则表达式:
','
例如,给定文本/[\(\),].*$/
我需要获取(aaa,bbb)ccc
。仍然,它返回整个文本。这个正则表达式有什么问题?
答案 0 :(得分:2)
您可以使用:
'(aaa,bbb)ccc'.match(/[(),][^(),]+$/)
//=> [")ccc"]
[^(),]+
否定模式匹配[^(),]
中列出的任何字符。
[(),].*$
的问题在于它在输入中匹配第一个(
并匹配到结尾。
答案 1 :(得分: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"/>
答案 2 :(得分:0)
试试this正则表达式:
/[(,)][^(,)]*$/