正则表达式
一、创建
1.字面量 /表达式/修饰符
var reg1=/abc/g;//匹配一个字符串中是否包含abc g:global(全局)
console.log(reg1);
console.log(typeof reg1);//object
2、new关键字 构造函数
//var reg2=new RegExp('表达式','修饰符')
var reg2=new RegExp('abc','g');
console.log(reg2);
二、属性和方法
var reg1=/a/g;
var str='abcabcabc';
var str2='ABCABCABC';
一)属性
1、constructor 对创建正则表达式对象的函数的应用console.log(reg.constructor)
2、prototype 向对象添加属性和方法 原型console.log(RegExp.prototype)
3、global 判断是否设置了 "g" 修饰符
4、ignoreCase 判断是否设置了"i"修饰符
5、multiline 判断是否设置了"m"修饰符
6、source 返回正则表达式的匹配模式表达式
7、lastIndex 用于规定下次匹配的起始位置
二)方法
1、exec() 检索字符串中指定的值。返回找到的值,并确定其位置console.log(reg1.exec(str));
2、test()检索字符串中指定的值。返回true或false
console.log(reg1.test(str));//true
console.log(reg1.test(str2));//false
3、toString()返回正则表达式的字符串
console.log(reg1.toString());
三、修饰符
1、i 忽略大小写 ignoreCase
var reg2=/a/i;
console.log(reg2.test(str2));//true
2、g 全局匹配global
console.log(str1.replace(reg1,'H'));//Hbcabcabc
var reg3=/a/gi;
console.log(str1.replace(reg3,'H'));//HbcHbcHbc
console.log(str2.replace(reg3,'H'));//HBCHBCHBC
3、m多行匹配 multiline
var str3='abc\nabcabc';
var reg5=/a/gm;
console.log(str3.replace(reg5,'M'));
四、模式之范围
1、[字符族] 查找每个范围内的字符
var reg1=/acb/;
console.log(reg1.test("abcdefg"));//false
2、[abc] 查找[]之间的任何字符
var reg2=/[acb]/;
console.log(reg2.test("a"));//true
console.log(reg2.test("ab"));//true
console.log(reg2.test("abdhehekeku"));//true
3、[^abc] 查找任何不在[]之间的字符。 排除
var reg3=/[^acb]/;
console.log(reg3.test("a"));//false
console.log(reg3.test("acb"));//fasle
console.log(reg3.test("gghkyunguym,jkyuh"));//true
4、[0-9] 查找任何从 0到9的数字
var reg4=/[0-9]/;
console.log(reg4.test("6789"));//true
var reg5=/[0-5]/
console.log(reg5.test("6789"));//false
5、[a-z] 查找任何从小写 a 到 小写 z的字符
6、[A-Z] 查找任何从大写 A 到 大写 Z的字符
7、[A-z] 查找任何从大写 A 到 小写 z的字符
8、 (red|green|blue) 查找指定的选项 或
var reg6=/(a|b|c)/;
var reg7=/abc/;
var reg8=/([a]|[b]|[c])/;
console.log(reg6.test("hello a"));//true
console.log(reg7.test("hello a"));//false
五、模式之元字符
1、拥有特殊含义的字符 \
2、. 查找单个字符,除了换行和行结束符以外的任意字符
var reg1=/./;
console.log(reg1.test("abcdefg"));//true
3、\w 查找数字、字母及下划线。
4、\W 查找非单词字符。
5、\d 查找数字。
6、\D 查找非数字字符。
7、
// \s 查找空白字符。
// \S 查找非空白字符。
// \b 匹配单词边界。
// \B 匹配非单词边界。
// \0 查找 NULL 字符。
// \n 查找换行符。
// \f 查找换页符。
// \r 查找回车符。
// \t 查找制表符。
// \v 查找垂直制表符。
// \xxx 查找以八进制数 xxx 规定的字符。
// \xdd 查找以十六进制数 dd 规定的字符。
// \uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。
注:中文 [\u4e00 -\u9fef]
六、模式之量词 限定符 {}
1、n{X} 匹配包含 X 个 n(连续) 的序列的字符串。
例如,/a{2}/ 不匹配 "candy," 中的 "a",但是匹配 "caandy," 中的两个 "a",且匹配 "caaandy." 中的前两个 "a"。
2、n{X,Y} X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。
例如,/a{1,3}/ 不匹配 "cndy",匹配 "candy," 中的 "a","caandy," 中的两个 "a",匹配 "caaaaaaandy" 中的前面三个 "a"。注意,当匹配 "caaaaaaandy" 时,即使原始字符串拥有更多的 "a",匹配项也是 "aaa"。
3、n{X,} X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配。
例如,/a{2,}/ 不匹配 "candy" 中的 "a",但是匹配 "caandy" 和 "caaaaaaandy." 中所有的 "a"。
// n+ 匹配任何包含至少一个 n 的字符串。 n{1,}
// n* 匹配任何包含零个或多个 n 的字符串。 n{0,}
// n? 匹配任何包含零个或一个 n 的字符串。 n{0,1}
七、模式之定位符
1、n$ 匹配任何结尾为 n 的字符串var reg1 = /abc$/; //匹配以abc结尾的字符串
2、^n 匹配任何开头为 n 的字符串var reg2 = /^abc/; //匹配以abc开头的字符串 console.log(reg2.test("cabcabc"));
3、 ?=n 匹配任何其后紧接指定字符串 n 的字符串。var reg8=/ab(?=a)/gi;
4、!=n 匹配任何其后没有紧接指定字符串 n 的字符串。var reg9=/ab(!=a)/gi;