关于常用正则的练习

本文详细介绍了一系列实用的正则表达式案例,包括数字验证、邮箱格式检查、身份证号匹配等,适合初学者快速掌握正则表达式的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	// 比零大的叫整数,故而零不是正数,零是整数,最小的自然数,有理数

	// 校验大于零的数(含小数)
	let positiveNumberReg = /^([1-9][0-9]{0,}(\.[0-9]{1,})?|(0\.[0-9]{1,}))$/
	
	// 校验整数(含有负数)
	let integerReg = /^-?\d{1,}$/
	
	// qq号的格式 5-10 位数字
	let qqNumReg = /^\d{5,10}$/
	
	// 手机号的格式
	let phoneNumReg = /^1\d{10}$/
	
	// 邮箱测试 [0-9a-zA-Z]{1,}\@
	// {1,} 的写法相当于 +   {0,}的写法相当于 *   {0,1}相当于?   \d 等价于 [0-9]
	let mailAccountReg = /^[0-9a-zA-Z!#$%^&*()_+{}:"<>?|]{1,}\@[a-zA-Z]{1,}(\.[a-zA-Z]{1,})+$/
	
	// 身份证
	let idCardNoReg = /^\d{6}(19|20)[0-9]{2}((0[1-9])|1[1-2]|10)((0[1-9]|1[0-9]|2[0-9]|3[0-1])\d{4})$/
	let idCardNo = '';
	let birthDate = idCardNo.slice(6,14)
	// 例如  1998/01/12
	let str = (birthDate.slice(0,4)+'/'+birthDate.slice(4,6)+'/'+birthDate.slice(6));
	
	// 匹配圆括号中的正则(含小括号)
	let pattern1 = /\(7890\)/  // 例子:56(7890)67 exec的结果:[ '(7890)', index: 2, input: '56(7890)67', groups: undefined ]
	
	let pattern2 = /(?:y|ies)/; // 是不返回结果的  这个写法相当于  /(y|ies)/
	
	// 正向预查 -- 空格用什么表示
	let pattern3 = /Windows(?=95|2000|98|xp)/;
	// 相当于
	let pattern3Transfer = /Windows(95|2000|98|xp)/
	// console.log(pattern3Transfer.exec('Windows9'))
	// [
	//   'Windows95',
	//   undefined,
	//   '95',
	//   index: 0,
	//   input: 'Windows95',
	//   groups: undefined
	// ]
	
	
	// 负向预查
	let pattern4 = /Windows(?!95|2000|98|xp)/
	
	// 非贪婪模式
	let pattern5 = /o+/
	let pattern6 = /o+?/
	
	// console.log(pattern5.exec('ooooo')) // [ 'ooooo', index: 0, input: 'ooooo', groups: undefined ]
	// console.log(pattern6.exec('ooooo')) // [ 'o', index: 0, input: 'ooooo', groups: undefined ]
	
	// 匹配字符串 匹配 zxy 字符串 
	let pattern7 = /xyz/
	// console.log(pattern7.exec('xyz8'))
	// [ 'xyz', index: 0, input: 'xyz8', groups: undefined ]
	
	// 匹配字符串集合 匹配x,y,z 任意一个
	let pattern8 = /[xyz]/;
	// console.log(pattern8.exec('xyz8'));
	// [ 'x', index: 0, input: 'xyz8', groups: undefined ]
	
	// 匹配负值字符集合 匹配未包含的任意字符串
	let pattern9 = /[^xyz]/;
	// console.log(pattern9.exec('xyz1'))
	// [ '1', index: 3, input: 'xyz1', groups: undefined ]
	
	// 匹配字符范围
	let pattern10 = /[a-z0-9A-Z]/;
	// console.log(pattern10.test(1))  // true
	// console.log(pattern10.test('c')) // true
	// console.log(pattern10.test('A')) // true
	
	// 匹配负值字符范围
	let pattern11 = /[^a-z0-9A-Z]/;
	// console.log(pattern11.test(1));// false  
	// console.log(pattern11.test('c'));// false 
	// console.log(pattern11.test('A'));// false
	// console.log(pattern11.test('*'));// true
	
	// 匹配单词边界
	let pattern12 = /er\b/;
	// console.log(pattern12.test('er'));// true
	// console.log(pattern12.test('teacher'));// true
	// console.log(pattern12.test('picture'));// false
	// console.log(pattern12.test('every'));// false
	// console.log(pattern12.test('error'));// false
	
	// 匹配非单词边界
	let pattern13 = /er\B/;
	// console.log(pattern13.test('er'));// false
	// console.log(pattern13.test('teacher'));// false
	// console.log(pattern13.test('picture'));// false
	// console.log(pattern13.test('every'));// true
	// console.log(pattern13.test('error'));// true
	
	// 由x指明的控制字符 -- 这个不知道怎么用(暂时废弃)
	let pattern14 = /\cM/;
	// console.log(pattern14.test('Control-M'))
	
	// 数字整数集合 前后写法的意思是一样的
	let pattern15 = /\d|[0-9]/
	// console.log(pattern15.test(677));// true
	
	// 非数字的集合 前后写法的意思是一样的
	let pattern16 = /\D|[^0-9]/
	// console.log(pattern16.test(677));// false
	
	// 换页符 前后写法的意思是一样的
	let pattern17 = /\f|\x0c|\cL/
	
	// 换行符
	let pattern18 = /\n|\x0a|\cJ/
	let changeLineStr = `
	`
	let normalStr = '  ';
	// console.log(pattern18.test(changeLineStr));// true
	// console.log(pattern18.test(normalStr));// false
	
	// 回车符 -- 这个不知道该怎么匹配
	let pattern19 = /\r|\x0d|\cM/
	let newStr = `
	这是第一行文字
	这是第二行文字
	`
	// console.log(pattern19.test(newStr));
	
	
	// 匹配任何空白字符
	let pattern20 = /\s|[\f|\n|\r|\t|\v]/
	let tabStr = '  '
	// console.log(pattern20.test(tabStr));// true
	
	// 匹配制表符
	let pattern21 = /\t|x09|\cI/
	// console.log(pattern21.test(tabStr));// false
	
	// 垂直制表符
	let pattern22 = /\v/;
	
	// 匹配包括下划线的单词字符
	let pattern23 = /^\w{1,}$/
	// console.log(pattern23.test('azA_'));// true
	// console.log(pattern23.test('azA_-'));// false
	
	// 匹配任何非单词字符
	let pattern24 = /^\W{1,}$/;
	console.log(pattern24.test('-'));// true
	console.log(pattern24.test('a'));// false
	
	// 匹配十六进制转移值 -- 没看懂,暂时不管
	// \xn	匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'\x41' 匹配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码。

其中,邮箱,qq号码,身份证等等都是按照基本格式进行封装的,没有进行特别复杂的处理 [后续给身身份证的正则分段进行说明]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值