JS面试③正则表达式
1.简单入门
//正则表达式
let reg1=/abc/;
let reg2=new RegExp("abc");
let str="cdadabcjh";
let str1="h";
let str2="cdadacjh";
console.log(reg1.test(str)); //true
console.log(reg2.test(str2)); //false
let reg3=/^c/;//是否以c开头
console.log(reg3.test(str)); //true
let reg4=/h$/;//是否以h结尾
console.log(reg4.test(str)); //true
let reg5=/^h$/;//是否内容、字符个数都是h
console.log(reg5.test(str)); //false
console.log(reg5.test(str1)); //true
let reg6=/s*/;//表示*前面的字符个数为0个---无穷个
let reg7=/j*/;//表示*前面的字符个数为0个---无穷个
console.log(reg6.test(str)); //true
console.log(reg7.test(str)); //true
let reg8=/s+/;//表示+前面的字符个数为1个---无穷个
let reg9=/j+/;//表示+前面的字符个数为1个---无穷个
console.log(reg8.test(str)); //false
console.log(reg9.test(str)); //true
let reg10=/s?/;//表示 ? 前面的字符个数为0个---1个
let reg11=/^bdda?$/;//表示 ? 前面的字符个数为0个---1个
let str3="bddaaaaaaaaa";
console.log(reg10.test(str)); //true
console.log(reg11.test(str3)); //false
console.log(reg11.test("bdda")); //true
var r1 = /^(abc){3}$/;
var r2 = /^a|b$/;
var r3 = /^.$/;
console.log(r1.test("abcabcabc"));//true
console.log(r2.test("a"));//true
console.log(r2.test("b"));//true
console.log(r3.test("b"));//true
console.log(r3.test("\n"));//false
2.常用正则表达式
// (1)匹配 16 进制颜色值
var regex = /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g;
// (2)匹配日期,如 yyyy-mm-dd 格式
var regex = /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;
// (3)匹配 qq 号
var regex = /^[1-9][0-9]{4,10}$/g;
// (4)手机号码正则
var regex = /^1[34578]\d{9}$/g;
// (5)用户名正则
var regex = /^[a-zA-Z\$][a-zA-Z0-9_\$]{4,16}$/;
详细资料可以参考:
《前端表单验证常用的 15 个 JS 正则表达式》
《JS 常用正则汇总》
3.正则表达式例题
// 1.邮政编码:由6个数字构成,第一位不可以是0
let reg1=/^[1-9]\d{5}$/;
console.log(reg1.test("012345")); //false
console.log(reg1.test("12345")); //false
console.log(reg1.test("112345")); //true
// 2.手机号码:由13/15/17/18开头的11位数字
let reg2=/^1[3578]\d{9}$/;
console.log(reg2.test("25299442881")); //false
console.log(reg2.test("18280705152")); //true
// 3.QQ号:第一位不可以是0,位数在5-12位的数字构成
let reg3=/^[1-9]\d{4,11}$/;
// 4.检查是否是压缩文件:文件名由字母、数字、下划线构成,不可以以数字开头,后缀为.zip/rar/gz
let reg4=/^[a-zA-Z_]\w*\.(zip|rar|gz)$/;
console.log(reg4.test("a.zip")); //true
console.log(reg4.test("a.zp")); //false
console.log(reg4.test("abs1.rar")); //true
// 7.密码:字母、数字、下划线构成,6-20位
let reg5=/^\w{6,20}$/;
// 8.用户名:字母、数字、下划线构成,6-16位,不能以数字开头
let reg6=/^[a-zA-Z_]\w{5,15}$/;
console.log(reg6.test("1username"));//false
console.log(reg6.test("username"));//true
// !!!!!!!!!! 10.输入年龄:只能在18-40间
let reg7=/^1[89]$|^[23][0-9]$|^40$/;
console.log(reg7.test("40")); //true
console.log(reg7.test("20")); //true
console.log(reg7.test("19")); //true
console.log(reg7.test("16")); //false
// 11.身份证号码:15或18位,如果是15位则全部为数字,如果是18位,前17位为数字,第18位为数字或字母x,字母不区分大小写
let reg8=/^\d{15}$|^\d{17}[\dxX]$/;
// 12.中文名字:三个汉字、中间必须是小或晓【[\u4e00-\u9fa5]表示任意一个汉字】
let reg9=/^[\u4e00-\u9fa5][小晓][\u4e00-\u9fa5]$/;
console.log(reg9.test("王狗蛋")); //false
console.log(reg9.test("张大山")); //false
console.log(reg9.test("张小山")); //true
console.log(reg9.test("张晓山")); //true
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步