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