为什么正则表达式模式不符合 javascript 数据类型的条件
Why doesn't a regex pattern qualify as a javascript data type?
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 中定义正则表达式的方式。正则表达式由/
字符分隔。请记住,正则表达式不是字符串,它本身就是这样的东西。这是一篇关于此事的好文章。
相关文章:
- javascript解释器如何理解变量的数据类型
- 从查询字符串参数推断出正确的数据类型
- 为什么不'我们在javascript中使用函数参数的数据类型
- 基于数据类型的编辑框的汇总列表
- 如何降低此函数的复杂性,该函数根据数据类型进行回调
- 比较和分配数据类型的困难
- 在javascript中调用函数/对象引用时,可容纳任何数据类型
- E4X中是否有一种方法可以将基元数据类型的XMLList转换为类似于Array.join()的Array
- Highcharts系列.数据数据类型限制
- 如何在php循环中显示隐藏的数据类型
- 如何从标签数据类型=“;无线电”;
- 如何使用 Java 脚本从 csv 文件中查找每列的数据类型
- 在 Javascript 中更改数据类型
- 抽象数据类型等效于类型
- JavaScript中的“符号”原始数据类型是什么?
- 数据类型Jasmine
- 有没有一种方法可以在Typescript中自动检查数据类型的数据相等性
- 为什么正则表达式模式不符合 javascript 数据类型的条件
- 将变量数据类型解析为一个函数,该函数在JavaScript中包含对数据类型的条件检查
- 根据返回的数据类型应用if else条件