'RegExp'和正则表达式之间的区别?

时间:2011-06-20 09:45:40

标签: javascript regex

我刚刚使用Javascript进入正则表达式...而且我似乎已经让自己感到困惑......

一些谷歌搜索在这里和那里对我没有任何好处......

我知道Javascript语法:

var str = "Hello!";
var x = new RegExp(...);
document.write = x.eval(str);

我在这里错过了什么吗?

编辑:显然我不清楚......我是Javascript Regular Expressions的新手。根据我的理解,正则表达式和正则表达式是不同的。如果是这样,有什么区别?

2 个答案:

答案 0 :(得分:4)

JavaScript的RegExp个实例没有eval个功能,您可能会考虑exectest

示例:

var rex = /^\d+$/;
//Or  var rex = new RegExp("^\\d+$");
//Note how within quotes you have to escape backslashes

if (rex.test(someValue)) {
  display("Yup, it's all digits");
}
else {
  display("Nope, there are non-digits there or it's blank.");
}

Live copy

答案 1 :(得分:3)

有“RegExp类”语法:

var pattern = new RegExp("/[a-z]+/","i"); 

和“RegExp literal”语法:

var pattern = /[a-z]+/i;

每一个都有自己的优点。类语法可以处理变量,这样你可以创建动态正则表达式,另一方面文字systax更短,你不必逃避这么多。

获得模式后,可以使用一些正则表达式方法,例如:

text.match(pattern);
text.replace(pattern,replacement);

pattern.exec(text);
pattern.test(text);