正则表达式:一种文本匹配模式
声明方式
- 字面量(固定正则): /匹配模式/ // var reg = /a/;
- 构造函数(动态正则): new RegExp('匹配模式') // var r = new RegExp(a); 或者 var r = new RegExp('mark');
正则验证文本 var word = '来,吧'; var reg = /来/;
正则验证方法 正则.test(待验证文本); // 验证通过返回true,失败返回false ==> var isPass = reg.test(word);
正则修饰符,需要多个出现时可连续书写(顺序无所谓),如 r = /sd/img
- i 忽略大小写 // var r = /acSc/i; console.log(r.test('efaCsCfd'));
- g 全局匹配
- m 多行匹配 ( 换行匹配)
正则修饰符只读属性
var r5 = /a/g; console.log('r5 ==> ', r5);
var r6 = new RegExp('a', 'img'); console.log('r6 ==> ', r6);
- 正则是否设置忽略大小修饰符 console.log('r5.ignoreCase ==> ', r5.ignoreCase);
- 正则是否设置全局修饰符 console.log('r5.global ==> ', r5.global);
- 正则是否设置多行匹配修饰符 console.log('r5.multiline ==> ', r5.multiline);
正则预定义模式
- 字符集 [匹配模式], 如 [abc], 在没有量词控制的情况下,只能匹配字符集的任意一个字符; var reg = /[abc][123]/; reg.test('sa3ds'); // 匹配abc三个字符中的一个+123三个数字中的任意一个,并且匹配到的字母和数字必须是连续的,此时会匹配到a3,若匹配文本更换为('adfb1ds'),则会匹配到b1,若文本更换为('s1asf2d3b')查找不到连续存在的,则会返回false; 匹配时,reg中的匹配模式中的书写顺序即为文本匹配顺序
- 汉字范围 [\u4e00-\u9fa5] // var reg = /[\u4e00-\u9fa5]/;
- 字母范围 [A-Z][a-z] 或者 [A-z] // var reg = /[A-Z][a-z]/;
- 数字范围 [0-9] 等价于 [0123456789] 等价于 \d // var reg = /[0-9]/;或者reg = /\d/;
- 数字字母下划线(三者无顺序) [A-z_0-9] 等价于 \w // var reg = /[A-z_0-9]/;或者reg = /\w/;
- 非数字 [^0-9] 等价于 \D : ^ 脱字符,只能放置于匹配模式[ ]中的起始位置,取反 匹配模式中存在的均返回false // var reg = /[^0-9]/;或者reg = /\D/;
- 除了数字字母下划线以外的其他字符 [^0-9A-z] 等价于 \W // var reg = /[^0-9A-z]/;或者reg = /\W/;
- 空白符 [ \t\n\r\f\v] 等价于 \s // var reg = /\s/; \t:制表符、\n:换行符、\r:回车、\f:换页符、\v:垂直制表符
- 非空白符 [^ \t\n\r\f\v] 等价于 \S
- 单词边界匹配,单词以空格为边界 \b // var word = /\bhello\b/;匹配单词hello,必须保证单词前后为空格,或者单词前无字符及单词后为空格即该单词是行内首单词
- 非单词边界匹配 \B
- 匹配除了换行符 \n、回车符\r 以外的所有字符,使用英文实心点 . 表示, // var w = /./;
- 若需匹配字符 . 或其他正则规则字符,则可以在字符前加上转义符\,则可以匹配文本中的 . 字符或其他
动态正则表达式的转移符:连续两个反斜杠 \ 的出现,表示第一个反斜杠之后的为普通文本,非连续的反斜杠 \ 符号以单独形式出现,其后面为正常的正则字符匹配范围,如:var j = [\\.\\d]; 显示普通文本 ‘ \.\d ’;var j = [\\.\d];(\d 表示匹配的字符范围) 则显示 \.和匹配的数字;
在字符集[]中出现正则规则字符如?+.等字符作文普通文本时均不需要加转义字符反斜杠\,在字符集外则需要;单独出现的反斜杠\属于转义字符,对\后面的字符作转义
匹配模式可拼接:var t = 'sdsc'; var reg = new RegExp('\\.[0-9' + t + ']'); console.log(reg.test('\.2d'));