正则表达式js中是一种对象
由以下代码:
rer.test(str) 验证字符串是否符合reg规则 str字符串中是否有rer正则表达式
str:字符串 rer:正则表达式
var rer = /\./ //就是点
var reg = /华清/
var str = "夏至牛蛙666."
var res = rer.test(str) //验证字符串是否符合reg规则 str字符串中是否有rer正则表达式
console.log(res)
test函数的另一种用法:
new RegExp 创建正则对像
var reg1 = new RegExp("夏至冬至")
var str1 = "夏至冬至来来"
var res = reg1.test(str1)
console.log(res);
match匹配
由以下代码:
str2.match(reg2) : str2为字符串 reg2为要在字符串中匹配的正则表达式 与test相反
/[a-c][a-c]/ig 表示取两个数 第一个a-c之间的数 第二个也是a-c之间的数 两个数要相邻
i表示不用区分大小写 g表示不限数量
当reg2改成/a/ match会返回成数组 使用str.length打印a出现的次数
var reg2 = /[a-c][a-c]/ig //取出两位 第一位是a到c之间的 第二位也是
var str2 = "bcdeAfgAaa666"
var arr = str2.match(reg2) //返回匹配到的第一个值 加了g返回多个
console.log(arr);//bc Aa
判断是否以...开头或结尾
/^a/是否以a开头 /a$/是否以$结尾
用test函数判断
var reg3 = /^a/i //a$是否以a结尾 ^a是否以a开头
var str3 = "abcdeAfgAaa666A"
var arr1 = reg3.test(str3)
console.log(arr1);
查找以...结尾的:
/\.(jpg|png)$/ /.表示. (jpg|png---jpg或者png $---以..结尾
var reg4 = /\.(jpg|png)$/ //查找以.jpg结尾 或者.png结尾的
var str4 = "qabAcdefAg6acbb66a.jpg"
var re = str4.match(reg4)
console.log(re);
每个字符取一位
[赵千村][云鹤][abc] 每个括号里取一位 组合起来
^[赵千村][云鹤][abc]以赵千村中的一个字开头的
var reg5 = /[赵千村][云鹤][abc]/g //每个方括号分别取一位
var str5="赵鹤a赵云bc村鹤a"
var arr3=str5.match(reg5)
console.log(arr3);//'赵鹤a', '赵云b', '村鹤a']
笔试题:去掉收尾空格
/(^\s+)|(\s+$)/g \s表示空格 这里表示空格开头或者空格结尾的
re=str.replace(reg,"") replace 替换 将str字符中的reg(开头的空格或结尾的空格) 替换成 ""空
// 笔试题去掉字符串的头尾空格
// str.tirm()
var reg=/(^\s+)|(\s+$)/g //去掉收尾空格
var str=" abc "
var re=str.replace(reg,"")//把str中的空格去掉
console.log(re);
/[a]+/ 多个a
=/[a-b]+/ a和b连着出现出现多个都行
/a{3}/ 三个连在一起的
手机号的正则
var reg=/^1[3||5||7||8||9][0-9]{9}/ //1开头 35789为第二位 后面九个随机数
var str="18623481834"
console.log(reg.test(str))
exec函数
性质和match差不多直接返回和正则表达式相匹配的值 但是字符串的正则表达式的位置相反和test一样
第二次运行时会从上一次调用的值后面开始查找
var reg=/[a-z]{3}[1-7]/ig
var str="ABC3ccc9bbb6"
var re=reg.test(str)
console.log(re);
var re2=reg.exec(str)//直接返回出来
var re3=reg.exec(str)//第二次调用会从上一次调用的值的后面开始查找
console.log(re2);
console.log(re3);
克隆正则表达式
reg.source表示reg中的字符串
var reg2=new RegExp(reg.source)
var str="helloabc"
var count=0
var temp=0
while(str.indexOf("lo",temp)!=-1){//返回首次出现的位置从temp=0开始 如果不等于-1继续
count++
temp=str.indexOf("lo",temp)+1
}
console.log(count);
返回首次出现的位置
re=str.indexOf("lo")
判断重复次数
str.indexOf("lo",temp)!=-1 表示结果不等于-1就继续 意为 匹配到了lo继续 没匹配到表示已经检索完了返回-1 while结束
temp=0表示从0下标开始检测lo出现的位置
每次循环temp都等于上次匹配到的位置+1
count为计数器 匹配到的数量
var str="helloabc"
var count=0
var temp=0
while(str.indexOf("lo",temp)!=-1){//返回首次出现的位置从temp=0开始 如果不等于-1继续
count++
temp=str.indexOf("lo",temp)+1
}
console.log(count);