javascript中的正则表达式问题

时间:2013-05-17 20:52:44

标签: javascript regex

我尝试使用reg exp来获取字符串中的所有功率计算,我尝试了以下代码:

var regex = new RegExp('[0-9]+[^]{1}[0-9]+');
regex.exec('1^2');

这可以工作并返回1 ^ 2,但是当我尝试使用以下字符串时:

regex.exec('1+1^2');

返回1+1

2 个答案:

答案 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]+/;

Fiddle

答案 1 :(得分:4)

正则表达式中的

[^]是一个被反转的字符类([])(^)。例如[^abc]是“ a,b或c”的任何字符。你需要逃脱克拉:[\^]

同样,{1}也是多余的。正则表达式中的任何字符类或单个字符都有隐含的{1},因此/a{1}b{1}c{1}/只是说/abc/的一种非常冗长的方式。

同样,单字符字符类也是多余的。 /[a]//a/完全相同。