二、如何创建
1.字面量 var re=/abc/ 2.调用RegExp对象的构造函数 var re=newe RegExp('abc');
1.切割字符串(分割字符串变成数组) split var str="ddfadfdafdfjagfg".split(/a/); console.log(str);//["ddf", "dfd", "fdfj", "gfg"] 2.寻找匹配的字符串、返回索引值 search var str="sfsdfea".search(/d/); console.log(str);//3 如果找不到返回-1; 3.寻找匹配字符串返回一个数组 match var str='abbcccbbbbbddbbbdabbb'.match(/b+/g)//b+,b出现1次或更多次, b*出现0次或更多次 console.log(str); 4.替换匹配到的字符串 replace var str="www.sina.com".replace(/sina/,"baidu"); console.log(str); 5. exec在字符串中寻找匹配字符串,该方法比其他正则方法或字符串方法支持的更复杂 var str= /abc/.exec('aaaabccccbacabc') console.log(str); console.log(str.index);//3 6.检测字符串是否匹配正则表达式 test() var str= /abc/.test('aaddccddabcddeeddfff') console.log(str);//true 返回的是布尔值
普通字符:大小写字母和数字等
特殊字符则具有特殊含义(js中常用的特殊字符有(){ }[] $ | ? * + .)若想匹配这类字符必须转义
预定义特殊字符:
+ / / 制表符 eg: console.log(/ /.test(' ')) + / 回车符 eg: console.log(/ /.test(`aaa + bbb`)); + f /f/ 换页符 + // 与回退字符
预定义类
/./ 除了换行和回车其他任意字符都支持 /d/ 匹配数字 /D/ 匹配非数字 /s/ 匹配空白 /S/ 匹配非空白 /w/ 匹配字母单词字符如:[a-zA-Z_0-9] /W/ 非单词字符
/string/.test("string") 必须匹配完整的字符 只多不能少/string/.test("stringfff")//true/string/.test("strin")//false; /[andy]/.test("and") 只要包含其中一个字符即为true/[andy]/.test("a")//true
负向类(取相反) ^
/[^abc]/.test("abc")//false (不够和正好,返回false,多了返回true)
/[^abc]/.test("ab")//false
/[^abc]/.test("a")//false
/[^abc]/.test("abcd")//true
范围类
/[a-z]/.test("12")//false 表示a-z之间所有的小写字母 /[0-9]/.test("12")//true 表示0-9之间所有的数字
组合类
/[a-zA-Z0-9]/.test("ff")//true 表示小写字母a-z之间大写字母A-Z之间,数字0-9之间
^ 匹配行或者字符串的起始位置 注意:^在[]中才表示非 $ 会匹配行或字符串的结尾位置
3、量词
*(贪婪) 重复零次或更多(>=0) +(懒惰) 重复一次或更多次(>=1) ?(占有) 重复零次或一次 (0||1) 要么有,要么没有 {} 重复多少次的意思 {n}重复n次 如:你的密码只有6位 {6} {n,} 重复n次或更多(>=n) {n,m} 重复出现比n多比m少 (n<=x<m) *、{0,} +、{1,} ?、{0,1}
4、修饰符
g 修饰符用于执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。'12a34b56c78d90e'.match(/d+/) => ["12"]'12a34b56c78d90e'.match(/d+/g) => ["12", "34", "56", "78", "90"] i 修饰符用于执行对大小写不敏感的匹配。'aabAAcAa'.match(/aa/g) => ["aa"]'aabAAcAa'.match(/aa/gi) => ["aa", "AA", "Aa"]
5、分组
虽然量词的出现,能帮助我们处理一排密紧密相连的同类型字符。但这是不够的,我们用中括号表示范围内选择,大括号表示重复次数。如果想获取重复多个字符,我们就要用小括号进行分组了。 /(bye){2}/.test('byebye')=> true /(bye){2}/.test('bye')=> false
6、匹配中文
匹配中文:[u4e00-u9fa5] /[u4e00-u9fa5]+/.test('爱创课堂')=> true /[u4e00-u9fa5]+/.test('aaa')=> false