var rclass = /[\n\t\r]/g;
在上面,它周围没有""
或''
,因此它不能是字符串,这不是它自己的数据类型吗?为什么它不符合资格?
另外,为什么我们不将""
,''
放在它周围并将其表示为字符串?
答案 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。