1、说明
JavaScript中的正则表达式用RegExp对象表示,可以使用RegExp()构造函数来创建RegExp对象,不过RegExp对象更多的是通过一种特殊的直接量语法来创建,就想通过引号包裹字符的方式来定义字符串直接量一样,正则表达式直接量定义为包含在一对斜杠 (/) 之间的字符,例如:
运行这段代码创建一个新的RegExp对象,并将它赋值给变量pattern。这个特殊的 RegExp 对象用来匹配所有以字母"s"结尾的字符串。用构造函数 RegExp() 也可以定义一个与之等价的正则表达式,代码如下:
RegExp 直接量和对象的创建
就像字符串和数字一样,程序中每个取值相同的原始类型直接量均表示相同的值,就是显而易见的。程序运行时每次遇到对象直接量(初始化表达式)诸如 {} 和 [] 的时候都会创建新对象。比如,如果在循环体中写
var a = []
,则每次遍历都会创建一个新的空数组。
正则表达式的模式规则是由一个字符序列组成的。包括所有字母和数字在内,大多数的字符都是按照直接量仅描述待匹配的字符的。如此说来,正则表达式 /java/ 可以匹配任何包含“java”子串的字符串。除此之外,正则表达式中还有其他具有特殊语义的字符,这些字符并不按照字面含义进行匹配。比如,正则表达式 /s$/ 包含两个字符,第一个字符 “s” 按照字面含义匹配,第二个字符 $ 是一个具有特殊语义的元字符,用以匹配字符串的结束。因此这个正则表达式可以匹配任何以 “s” 结束的字符串。
2、直接量字符
正如上文提到的,正则表达式中的所有字母和数字都是按照字面含义进行匹配的。JavaScript正则表达式语法也支持非字母的字符匹配,这些字符需要通过反斜