Javascript 表示正则表达式中的任意字符集

Javascript 表示正则表达式中的任意字符集,javascript,java,regex,Javascript,Java,Regex,我想这样对待表达: 表达式1->总和$4,8,'x'$ 表达式2->和$2,15'(x^3+3)/(x+1)“$ 我使用正则表达式来识别模式: sum\$[0-9]+[,][0-9]+[,]['][.]*[\w]*[']\$ 但它只适用于表达式1,为什么表示任何字符的点(.)似乎不起作用?我必须以特殊的方式处理括号吗?工作的方式是它们完全匹配字符,因此在您的情况下,您必须使用不带[]的,如下所示: sum\$[0-9]+[,][0-9]+[,]['].*[\w]*[']\$ 此正则表达式还与

我想这样对待表达:

表达式1->总和$4,8,'x'$

表达式2->和$2,15'(x^3+3)/(x+1)“$

我使用正则表达式来识别模式:

sum\$[0-9]+[,][0-9]+[,]['][.]*[\w]*[']\$

但它只适用于表达式1,为什么表示任何字符的点(.)似乎不起作用?我必须以特殊的方式处理括号吗?

工作的方式是它们完全匹配字符,因此在您的情况下,您必须使用不带
[]
,如下所示:

sum\$[0-9]+[,][0-9]+[,]['].*[\w]*[']\$

此正则表达式还与表达式2匹配。表达式2是一个元字符,将与任何1个字符匹配。还有其他元字符,如
\d
,它将匹配0-9之间的1个字母一些元字符在字符类
[]
中失去了其特殊意义。因此字符类
[]
中的点将不再是元字符,而将被视为文字点

*
*?
是两件不同的事情。前者贪婪地匹配一切,而后者懒惰。例如,取一个字符串,如:
abbcbbc
。现在
a.*c
将匹配完整字符串
abbcbbc
,而
a.*c
将仅匹配
abbc

你可以试试这样的

sum\$\d+,\d+,'.*?'\$
演示:

你可以试试这个

sum\$[0-9]+[,][0-9]+[,]['][^']*[\w]*[']\$

将[.]替换为[^']

为什么此
'[.]*'
不起作用?使用此选项(除工作外)
'..*?“
@oschlueter
[.]*
匹配文字点字符,例如“…”。这就是我说的角色完全匹配。当您在
[]
中有点时,它没有特殊意义,只是一个点。