我试图使用reg exp从字符串中获取所有功率计算,我尝试了以下代码:
var regex = new RegExp('[0-9]+[^]{1}[0-9]+');
regex.exec('1^2');
这有效并返回 1^2 但是当我尝试使用以下字符串时:
regex.exec('1+1^2');
它返回1+1
我试图使用reg exp从字符串中获取所有功率计算,我尝试了以下代码:
var regex = new RegExp('[0-9]+[^]{1}[0-9]+');
regex.exec('1^2');
这有效并返回 1^2 但是当我尝试使用以下字符串时:
regex.exec('1+1^2');
它返回1+1
这是因为[^xyz]
意思是“不是 x、y 或 z”。^
是字符类 ( [...]
) 中的“非”运算符。要解决这个问题,只需转义它(一个反斜杠转义^
,另一个转义第一个反斜杠,因为它在字符串中并且它是一个特殊字符):
var regex = new RegExp('[0-9]+[\\^]{1}[0-9]+');
此外,您不需要使用字符类,{1}
如果您只有一个字符;这样做:
var regex = new RegExp('[0-9]+\\^[0-9]+');
最后,还有一项改进 - 您可以使用文字正则表达式语法 ( /.../
),因此您不需要两个反斜杠:
var regex = /[0-9]+\^[0-9]+/;
[^]
在正则表达式中是一个[]
被反转的字符类 ( ) ( ^
)。例如[^abc]
是“任何不是a、b 或 c 的字符”。你需要逃脱克拉:[\^]
。
同样,{1}
是多余的。正则表达式中的任何字符类或单个字符都有隐含{1}
,因此/a{1}b{1}c{1}/
只是一种非常冗长的说法/abc/
。
同样,单字符字符类也是多余的。/[a]/
与 完全相同/a/
。