
定义正则表达式的方法
有两种定义正则表达式的方法: 构造函数定义和正则直接数量定义. 例如:
var reg1 = new RegExp('\d{5, 11}'); // 通过构造函数定义
var reg2 = /\d{5, 12}/; // 通过直接量定义
正则表达式直接测量字符
\ o: NUL字符(\ u0000)
\ t: 制表符(\ u0009)
\ n: 换行符(\ u000A)
\ v: 垂直标签(\ u000B)
\ f: 换页(\ u000C)
\ r: 回车(\ u000D)
\ xnn: 用十六进制数字nn指定的拉丁字符,例如\ x0A等效于\ n
\ uxxxx: 由十六进制数字xxxx指定的Unicode字符,例如\ u0009等效于\ t

\ cX: 控制字符^ X,例如\ cJ等效于换行符\ n
正则表达式锚点字符
^: 匹配字符串的开头,在多行搜索中,匹配一行的开头
$: 匹配字符串的结尾,在多行搜索中,匹配一行的结尾
\ b: 匹配单词的边界,简而言之,它位于字符\ w和\ W之间,或者字符\ w与字符串的开头或结尾之间([\ b]匹配退格字符)
\ B: 匹配非单词边界的位置
(?= p): 零宽度的前向断言,要求以下字符都与p匹配,但不能包括与p匹配的那些字符
(?! p): 零宽度的否定第一断言,要求以下字符串与p不匹配
正则表达式的字符类
[...]: 方括号中的任何字符
[^ ...]: 任何不在方括号中的字符
.: 除换行符和其他Unicode行终止符之外的任何字符

\ w: 由ASCII字符组成的任何单词,等效于[a-zA-Z0-9]
\ W: 任何不由ASCII字符组成的单词都等同于[^ a-zA-Z0-9]
\ s: 任何Unicode空格
\ S: 任何非Unicode空格字符,请注意\ w与\ S不同
\ d: 任意ASCII码,等同于[0-9]
\ D: 除ASCII数字以外的任何字符,等效于[^ 0-9]
[\ b]: 直接退格(特殊情况)
为正则表达式重复字符语法
{n,m}: 匹配前一项至少n次,但不超过m次
{n,}: 匹配上一个项目n次或更多次
{n}: 匹配上一个项目n次
?: 匹配上一项0或1次,这意味着上一项是可选的,相当于{0,1}

+: 与上一项匹配一次或多次,等效于{1,}
*: 与上一项匹配0次或多次,等同于{0,}
正则表达式选择,分组和引号字符
|: 选择并匹配符号左侧的子表达式或右侧的子表达式
(…): 组合js中怎么使用正则表达式,将几个项目组合成一个单元,可以用“ *”,“ +”js中怎么使用正则表达式,“?”等符号修改该单元和“ |”匹配该字符串以备将来使用
(?:…): 仅将项目组合在一起,但不能记住与重组匹配的字符
\ n: 匹配第n个组的第一个匹配字符,该组是括号中的子表达式(也可以嵌套),组索引是从左到右的左方括号“(?: ”没有编码
正则表达式修饰符
i: 执行不区分大小写的匹配
g: 简而言之,进行全局匹配,即找到所有匹配,而不是在找到第一个匹配之后就停止
m: 多行匹配模式,^匹配行的开头和字符串的开头,$匹配行的结尾和字符串的结尾
用于模式匹配的字符串方法

search(): 其参数是一个正则表达式,它返回第一个匹配的子字符串的起始位置,如果没有匹配的子字符串,则返回-1. 如果search()的参数不是正则表达式,则将首先通过RegExp构造函数将其转换为正则表达式. Search()不支持全局检索,因为它忽略了修饰符g. 如:
var s = "JavaScript".search(/script/i); // s = 4
replace(): 用于执行检索和替换. 接收两个参数,第一个是正则表达式,第二个是要替换的字符串. 如果在正则表达式中设置了修饰符g,它将被全局替换,否则仅替换匹配的第一个子字符串. 如果第一个参数不是正则表达式,则直接搜索字符串,而不是将其转换为正则表达式. 如:
var s = "JavaScript".replace(/java/gi, "Script"); // s = Script Script
match(): 其参数是一个正则表达式. 如果不是,它将由RegExp转换,并返回匹配结果数组. 如果设置了修饰符g,则进行全局匹配. 如:
var d = '55 ff 33 hh 77 tt'.match(/\d+/g); // d = ["55", "33", "77"]
split(): 此方法用于将调用它的字符串拆分为子字符串数组. 使用的分隔符是split()的参数,其参数也可以是正则表达式. 如:
var d = '123,31,453,645'.split(','); // d = ["123", "31", "453", "645"]
var d = '21 , 123, 44, 64, 67, 3'.split(/\s*,\s*/); // d = ["21", "123", "44", "64", "67", "3"]
RegExp对象
每个RegExp对象具有5个属性. 属性源是一个只读字符串,其中包含正则表达式的文本. 全局属性是一个只读布尔值,用于指示此正则表达式是否带有修饰符g. ignoreCase属性是一个只读布尔值,用于指示此正则表达式是否带有修饰符i. 属性multiline是一个只读布尔值,用于指示此正则表达式是否带有修饰符m. lastIndex属性是一个可读可写的整数. 如果匹配模式具有g修饰符,则此属性将在整个字符串中存储下一个搜索的开始位置.
RegExp对象有两种方法. exec()的参数是一个字符串,其功能类似于match(). exec()方法在指定的字符串上执行正则表达式,即在字符串中执行匹配搜索. 如果找不到匹配项,则返回null,如果找到匹配项,则返回一个数组. 该数组的第一个元素包含与正则表达式匹配的字符串,其余元素是括号中的子表达式. 无论正则表达式是否具有修饰符g,匹配的子字符串都将返回相同的数组. 当调用exec()的正则表达式对象具有修饰符g时,它将把当前正则表达式对象的lastIndex属性设置为匹配子字符串旁边的字符位置. 当相同的正则表达式第二次调用exec()时,它将从lastIndex属性指示的字符串开始搜索. 如果exec()没有找到任何匹配的结果,它将把lastIndex重置为0. 例如:
var p = /Java/g;
var text = "JavaScript is more fun than Java!"
var r;
while((r = p.exec(text)) != null) {
console.log(r, 'lastIndex: ' + p.lastIndex);
}
另一种方法是test(). 它的参数是一个字符串. 使用test()检查某个字符串. 如果包含正则表达式的匹配结果,则返回true,否则返回false. 如:
var p = /java/i;
p.test('javascript'); // true
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-187119-1.html
锅炉