为什么正则表达式模式不符合javascript数据类型?

时间:2013-09-04 08:02:08

标签: javascript regex

var rclass = /[\n\t\r]/g;

在上面,它周围没有""'',因此它不能是字符串,这不是它自己的数据类型吗?为什么它不符合资格?

另外,为什么我们不将""''放在它周围并将其表示为字符串?

3 个答案:

答案 0 :(得分:3)

在JavaScript中,您可以通过两种方式创建大多数内容

通过调用其构造函数:

var myConstructedString = new String( "foo" );
var myConstructedRegExp = new RegExp("[\n\t\r]", "g");

或使用literals

var myLiteralString = "bar";
var myLiteralRegExp = /[\n\t\r]/g;

Regular Expressions也不例外。 Date是一种类型(Date实际上不是类型,但是Object类型的子类型),没有文字符号。

所以回答你的一个问题,“这不是它自己的数据类型吗?”。不,不是,RegExp是Object类型,就像Date和Math一样。 JavaScript中只有六个types

MDN的好读是this article

答案 1 :(得分:2)

当你有:

var myRegex = /myRegex/;

typeof myRegex返回“object”而不是“string”。 这意味着/myRegex/实际上不是字符串,而是具有自己方法的真实对象(例如,我可以在其上看到“exec”函数,或者“ignoreCase”......)。

我还发现了对象RegExp:new RegExp("myRegex")返回.... /myregex/: - )

事实证明,使用/myRegex/语法创建正则表达式的方法是一种等同于new RegExp("myRegex")的语法约定。

答案 2 :(得分:0)

因为这是你在JS中定义正则表达式的方法。正则表达式由/个字符分隔。请记住,正则表达式是一个字符串,它本身就是一个东西。关于此事This is a nice article