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

Why doesn't a regex pattern qualify as a javascript data type?

本文关键字:数据类型 条件 javascript 不符合 正则表达式 模式 为什么      更新时间:2023-09-26
var rclass = /['n't'r]/g;

在上面,它周围没有""'',所以它不能是一个字符串,这不是它自己的数据类型吗?那为什么它不符合条件呢?

另外,为什么我们不把 ""''放在它周围,而只是把它表示为一个字符串?

在 JavaScript 中,你可以通过两种方式创建大多数东西

通过调用其构造函数:

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

或使用文字:

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

正则表达式也不例外。Date 是一种没有文字表示法的类型(Date 实际上不是一种类型,而是 Object 类型的子类型)。

因此,要回答您的一个问题,"这不是它自己的数据类型吗?不,不是,RegExp 的类型是 Object,就像 Date 和 Math 一样。JavaScript 中只有六种类型

一篇很好的阅读是MDN的这篇文章。

当你有:

var myRegex = /myRegex/;

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

我还找到了对象正则表达式:new RegExp("myRegex")返回.... /myregex/ :-)

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

因为这就是你在 JS 中定义正则表达式的方式。正则表达式由/字符分隔。请记住,正则表达式不是字符串,它本身就是这样的东西。这是一篇关于此事的好文章。