一、创建正则表达式
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)); //true
console.log(reg.test(a)); //true
console.log(reg.test(a)); //false
console.log(reg.test(a)); //true
console.log(reg.test(a)); //true
console.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]/g
console.log(str.replace(reg,"*")) //********hiasghFAGJL
console.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*****world
console.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>