一、创建正则表达式
1.直接量语法
var reg = /a/g
2.简单的正则
<script>var reg=/傻/g;var p="你傻呀,这么菜,你真是傻"/* replace */var res= p.replace(reg,"**")console.log(res) //你**呀,这么菜,你真是**</script>
<script>var reg=/1/g;var p="2345";/* test() */console.log(reg.test(p)) //false/* 判断正则表达式是否在字符串里 */</script>
二、string中支持正则的api
match(),replace(reg,str),search(),split()
- 1.match()将所有匹配的字符(内容)提取出来,返回数组
- 2.replace() 替换匹配的对象
- 3.search() 方法用于检索字符串中指定的子字符串的位置
- 4.split(reg) 将字符串分割成数组
<script>/* match,search,replace,split *//* 正则表达式后面的为修饰符,i-->忽略大小写 g-->全局匹配 */var p="hello worldL";var reg=/l/ig; /* g:global i:ignore */console.log(p.match('l')) //["l", index: 2, input: "hello worldL", groups: undefined]console.log(p.match(reg)) // ["l", "l", "l", "L"]</script>
<script>var reg=/垃圾/g;var p="它是垃圾,见到垃圾就要扔了";var res=p.replace(reg,"**")console.log(res) //它是**,见到**就要扔了console.log(p.match(reg)) //["垃圾", "垃圾"]</script>
三、正则对象的属性
test()
测试字符串中是否存在匹配正则表示式的字符串,是有没有的问题,为局部匹配而生的。返回boolean值
var a ="aah";var reg = /a/g;console.log(reg.test(a)); //trueconsole.log(reg.test(a)); //trueconsole.log(reg.test(a)); //falseconsole.log(reg.test(a)); //trueconsole.log(reg.test(a)); //trueconsole.log(reg.test(a)); //false//它从匹配字符串的第一位开始找,之后从字符串的下一个位找,遇到不匹配的再从头找//用test,最好不要加g
四、语法
1.备选字符集:规定某一位字符的 备选字 符列表
特点:必须且只能多选一
<script>/* 上海,上天,上去 *//* 备选字符集:规定某一位字符的备选字符列表特点:多选 */var str = "上海,上天,上去,上哪"var reg = /上[海天]/g;console.log(str.replace(reg, "**")); //**,**,上去,上哪</script>
1.1备选字符的unicode号连续
//一个数字[0-9]//一个小写字母[a-z]//一个大写字母[A-Z]//一个数字或字母[0-9a-zA-Z]
<script>/* 连号的备选字符集[0-9][a-zA-Z][0-9a-zA-Z]*/var str="32542546hiasghFAGJL";var reg=/[0-9]/gconsole.log(str.replace(reg,"*")) //********hiasghFAGJLconsole.log(str.replace(/[a-z]/ig,"*")) //32542546***********console.log(str.replace(/[0-9a-zA-Z]/ig,"*")) //*******************</script>
2.预定义字符集:针对常用的备选字符集提供的简化符号
//一位数字[0-9] --> \d//一位数字字母或下划线[0-9a-zA-Z_] -->\w\s //1位空字符:空格,tab,换行. // 除换行外,其余所有字符
<script>/* 预定义字符及:针对常用的备选字符集提供的简化符号[0-9] \d[0-9a-zA-Z] \w空格 \s. 表示除换行符以外所有的字符*/var reg=/\d/g;var str="fdgaa45622"var t="hello world"console.log(str.replace(reg,"**")) //fdgaa**********console.log(str.replace(/\w/g,"**")) //********************console.log(t.replace(/\s/g,"*")) //hello*****worldconsole.log(t.replace(/./g,"*")) //***************</script>
3.量词:定字符集出现的次数
特点:默认一个量词,仅修饰左侧紧邻的字符集
3.1 确定数量:
{m,n} -->至少m个,最多n个{m,} -->m个以上{m} -->必须m个
<script>/* 量词:就是规定某一位字符出现的次数{3,6}{3,} //3次以上*/var reg=/\d{3,}/var str="321333lhlkj"console.log(reg.test(str)) //true</script>
3.2 不确定数量
? -->一个或0个+ -->1个以上* -->多个或没有
<script>/* + 1个,或1个以上* 0个或多个? 0,1*/var reg=/\d?/;var str="323fsfsdlj"console.log(reg.test(str)) //true</script>
贪婪模式和懒惰模式
<script>var str = "123456abc";var reg = /\d{3,6}/;console.log(str.replace(reg, "*")) //*abc</script>
<script>var str = "123456abc";var reg = /\d{3,6}?/;console.log(str.replace(reg, "*")) //*456abc</script>
4.选择和分组
//选择| 读作"或"//分组()
转义字符\var a ="hello\"";console.log(a); \\hello"
5.指定匹配位置
开头和结尾:^开头的xxx;$结尾的xxx
<script>var str=" hello world";var s="hello ";var t=" hello world "var reg=/^\s+/ //以空格开头一个或多个console.log(str.replace(reg,"*")) //*hello world//以空格开头的一个或多个字符替换成*var r=/\s+$/;console.log(s.replace(r,"*")) //hello*//以空格结尾的一个或多个字符替换成*console.log(t.replace(/^\s+|\s+$/g,"*")) //*hello world*//以空格开头和以空格结尾的一个或多个字符替换成*</script>
