RegExp对象并不是语言中的基本数据类型,和Date一样,它只是一种具有实用API的特殊对象。正则表达式的语法很复杂,API也很丰富。在第10章节会详细介绍。RegExp是一种强大和常用的文本处理工具,此处只是一个概述。
尽管RegExp并不是语言中的基本数据类型,但是他们依然具有直接量的写法,可以直接在javascript中使用。在两条斜线之间的文本构成了一个正则表达式的直接量。第二条斜线之后也可以跟随一个或多个字母。用来修饰匹配模式的含义。例如:
复制代码 代码如下:
/^HTML/ //匹配以HTML开始的字符串
/[1-9][0-9]*/ //匹配一个非零数字,后面是任意个数字
/\bjavascript\b/i/ //匹配单词javascript,并忽略大小写
RegExp对象定义了很多有用的方法,字符串同样具有可以接受RegExp参数的方法。例如:
复制代码 代码如下:
var text = "testing:1,2,3"; //文本示例
var pattern = /\d+/g / //匹配所有包含一个或多个数字的实例
pattern.test(text) // =>true:匹配成功
text.search(pattern) //=>9 :首次匹配成功的位置
text.match(pattern) //=> ["1","2","3"]所有匹配组成数组
text.repeat(pattern,"#"); //=>"testing:#,#,#"
text.split(/\D+/); //=>["","1","2","3"]:用非数字字符截取字符串
3.布尔值
布尔值指代真或假,开或关,这个类型只有两个值,保留字true或false
javascript中的比较语句的结果通常都是布尔值。例如
a==4
这段代码用来检测变量的a的值是否等于4.如果等于,则值为true,如果不等值为false
布尔值通常用于javascript的控制语句中,例如javascript中的if/else语句,如果布尔值为true执行第一段逻辑,如果为false执行另一段代码,例如
复制代码 代码如下:
if (a == 4)
b = b + 1;
else
a = a + 1;
任意javascript的值都可以转化为布尔值,下面这些值都被转化为false
复制代码 代码如下:
undefined
null
0
-0
NaN
""//空字符串
所有其它值,包括所有对象(数组)都会被转换为true,false和上面6个可以转化为false的值有时候称为“假值”,javascript期望使用一个布尔值时,假值会被当做false,真值会被当做true
来看一个例子,加上变量o是一个对象或是null,可以通过一条if语句来检测o是否是非null值。
if(o!==null)...
不等操作符“!==”将o和null比较,并得出结果为 true或false。可以先忽略这里的比较语句,null是一个假值,对象是一个真值。
if(o)...
对于第一种情况,只要当o不是null时才会执行if后的代码,第二种情况的限制没有那么严格。只有o不是false或任何假值(比如null或unfined)时才执行这个if。
布尔值包含toString()方法,因此可以使用这个方法将字符串转换为 “true”或"false",但它不包含其他有用的方法,除了这个不重要的API,还有三个重要的布尔值运算符。
&&运算符,||运算符和一元操作符“!”执行了布尔非(NOT)操作,如果真值返回false,假值返回true,比如
复制代码 代码如下:
if ((x == 0 && y == 0) || !(z == 0)) {
//x和y都是零或z是非零
}
4.null和undefined