正则表达式
调用者: 正则表达式
参数: 字符串文本
返回值: 布尔值
功能: 判断字符串文本是否符合格式
目录
1. 简单类 (允许字符串文本长度比正则格式的要多) 只多不少
学习正则表达式的语法:
一) 内部类
1. 简单类 (允许字符串文本长度比正则格式的要多) 只多不少
//test()里要比//的要多,则为true
var addr = 'http://www.xxxx.com';
var r1 = /http/;
var v1 = r1.test(addr);
console.log("v1:", v1);//v1: true
console.log(/hello/.test('hello world'));// true
console.log(/hello/.test('hello'));// true
onsole.log(/hello/.test('hell'));// false
2. 预定义类
“\” 这个反斜线表示转义
/\d/表示数字,/\D/表示非数字,/\s/表示空格,/\S/表示非空格
console.log(/d/.test('dddd'));// true
//表示匹配字符 'd' ,只要文本中出现字符 'd' ,格式就是true
///\d/表示数字
console.log(/\d/.test('dddd'));// false
console.log(/\d/.test(2024));// true
//表示匹配数字字符、只要文本中出现数字字符即可为true
console.log(/\d/.test('123abc'));// true
console.log(/\d/.test('abc'));// false
///\D/表示非数字
console.log(/\D/.test('a'));// true
//表示匹配非数字 、只要出现不是数字的字符格式就正确
console.log(/\D/.test('a123'));// true
console.log(/\D/.test('456'));// false
///\s/表示空格
console.log(/\s/.test("abc efg"));// true
//表示匹配空格 、只要出现空格字符格式就正确
console.log(/\s/.test("abcefg"));//false
///\S/表示非空格
console.log(/\S/.test('abcdefg'));// true
//表示匹配非空格 、只要有非空格字符出现格式就正确
console.log(/\S/.test(' '));// false
///\w/表示匹配英文字母,数字,下划线_
//三选一,存在一个即为true
console.log(/\w/.test('!!!!$$$$####'));// false
//表示匹配英文字母、数字、 下划线'_' , 只要出现字母、数字、下划线格式就为true
console.log(/\w/.test('a!!!!$$$$####'));// true
console.log(/\w/.test('_!!!!$$$$####'));// true
console.log(/\w/.test('1!!!!$$$$####'));// true
///\W/表示匹配非英文字母,非数字,非下划线_
//三选一,存在一个即为true
console.log(/\W/.test('111='));// true
//表示匹配非英文字母、非数字、 非下划线'_'
3. 范围类
[开始值-结束值]
//表示匹配指定范围的字母,只要出现指定范围的字符格式就为true
console.log(/[5-9]/.test('1236'));// true
//在5和9的范围内,test存在一个数字即可
console.log(/[5-9]/.test('123'));// false
console.log(/[5-9]/.test('1236'));// true
console.log(/[5-9]/.test('567'));// true
//在a和f的范围内,test存在一个即可
console.log(/[a-f]/.test('abc'));//true
console.log(/[a-f]/.test('xyz'));//false
console.log(/[A-K]/.test('AAA'));//true
console.log(/[A-K]/.test('aaa'));//false
//[\u4e00-\u9fa5]指的是中文,只要存在中文即可
console.log(/[\u4e00-\u9fa5]/.test('张一一'));// true
console.log(/[\u4e00-\u9fa5]/.test('张'));// true
console.log(/[\u4e00-\u9fa5]/.test('zhang'));// false
console.log(/[\u4e00-\u9fa5]/.test('zhang张'));//true
4. 组合类
console.log(/\d/) //表示匹配数字字符
console.log(/[0-9]/)//表示匹配数字字符
//表示匹配数字、大小写字母, 只要出现数字字符或字母字符格式就是true
console.log(/[0-9a-zA-Z]/.test(123));//true
console.log(/[0-9a-zA-Z]/.test('abc'));//true
console.log(/[0-9a-zA-Z]/.test('ABC'));//true
console.log(/[0-9a-zA-Z]/.test('______'));//false
5. 负向类、反向类
有就是不符合格式,没有就是符合格式!!!!!
注意: 留心这个向上的箭头 “ ^ ” 是写在[]方括号中 才表示取反,否则不是!!!!
// 表示取相反的意思 (不是abc字符的意思), 只要出现不是‘abc’的字符结果就是true
console.log(/[^abc]/.test('a'));// false
console.log(/[^abc]/.test('ab'));// false
console.log(/[^abc]/.test('abc'));// false
console.log(/[^abc]/.test('abd'));// true
console.log(/[^abc]/.test('abcx'));// true
console.log(/[^abc]/.test('xyz'));// true
二)边界语法
1.路径字符串
var path = 'https://www.baidu.com/logo.png';
// 表示匹配文本是否以“https”开始
var r2 = /^https/
console.log(r2.test('https://www.baidu.com/logo.png'));// true
console.log(r2.test('file:'));// false
// 表示匹配文本是否以“.png”结束
var r3 = /.png$/
console.log(r3.test('https://www.baidu.com/logo.png'));// true
console.log(r3.test('./css/base.css'));// false
// 表示匹配文本是否以“.png” 或者 “.jpg” 或者 “.gif” 或者 “.bmp”结束
// “.” 在正则表达式中表示任意字符
// “\.” 这表示一个点
var r4 = /\.(png|jpg|gif|bmp)$/
console.log(r4.test('https://www.baidu.com/logo.png'));// true
console.log(r4.test('demo.jpg'));// true
console.log(r4.test('demo.gif'));// true
console.log(r4.test('demo.bmp'));// true
// 匹配以 “hello” 开头、以“world”结尾的字符
var r5 = /^hello world$/;
console.log(r5.test("hello world 123"));// false
console.log(r5.test("hello world"));// true
console.log(r5.test("hello wo"));// false
三)量词 (指定格式的字符出现的次数)
1.{n} 表示指定格式的字符出现n次
console.log(/^a{3}$/.test('aaa'));// true
console.log(/^a{3}$/.test('aa'));// false
console.log(/^a{3}$/.test('aaaa'));// false
2.匹配数字字符出现6次
console.log(/^\d{6}$/.test(123456));//true
console.log(/^\d{6}$/.test(12345));//false
console.log(/^\d{6}$/.test(1234567));//false
3.{n,} 表示指定格式的字符出现n次以上
console.log(/^a{3,}$/.test('aaa'));// true
console.log(/^a{3,}$/.test('aaaaaa'));// true
console.log(/^a{3,}$/.test('aa'));// false
4.{n,m} 表示指定格式的字符出现n ~ m次
console.log(/^a{3,7}$/.test('aaa'));// true
console.log(/^a{3,7}$/.test('aaaaaaa'));// true
console.log(/^a{3,7}$/.test('aaaaaa'));// true
console.log(/^a{3,7}$/.test('aaaaaaaaaaaa'));// false
console.log(/^a{3,7}$/.test('aa'));// false
5.+ 表示出现1次以上 {1, }
console.log(/^a+$/.test('a'));// true
console.log(/^a+$/.test('aaa'));// true
console.log(/^a+$/.test(''));// false
6.? 表示0次或1次 {0,1}
console.log(/^a?$/.test('a'));// true
console.log(/^a?$/.test(''));// true
console.log(/^a?$/.test('aa'));// false
// .jpg 或者 .jpeg
// 例如图片格式的正则表达式: /\.jpe?g$/
7.* 表示0次或n次 {0,n}
console.log(/^a*$/.test(''));//true
console.log(/^a*$/.test('a'));//true
console.log(/^a*$/.test('aaaa'));//true
四) 其他
/正则表达式/g // 表示匹配所有字符串中所有字符
/正则表达式/i // 表示忽略字符串中字母的大小写
var text = "2024年10月01号";
// 要求:提取文本中的数字字符
var regExp = /(\d{4}).(\d{2}).(\d{2})./;
var result = regExp.exec(text);
console.log(result);
console.log(result[1]);
console.log(result[2]);
console.log(result[3]);
//分隔时间
var a = "[00:01.24]";
var regExp =/\[(\d{2}):(\d{2}).(\d{2})\];
var result = regExp.exec(a);
console.log(result);