JS正则表达式(4) => 常用的正则表达式

常用的正则表达式

验证有效数字
0, 1, 2, 3, -1, -2, -3
10, 20, 30, -10, -20, -30
11.1, 22.2, -11.1, -22.2
  +1, +2, +3
01, 002, 0003

/** 
 *	规则分析
 *		1. 可能出现 +, - 号, 也可能不出现					[+-]?
 * 		2. 一位数 0~9都可以, 多位数开头不能为0			\d|[1-9]\d+
 *		3. 小数点可以有(一旦有必须跟上数字), 可以无	 (\.\d+)?
 */

let reg = /^[+-]?(\d|[1-9]\d+)(\.\d+)?$/;
console.log(reg.test('+20.00'))			// true
console.log(reg.test('20.0'))				// true
console.log(reg.test('0.0'))				// true
console.log(reg.test('+003'))				// false
console.log(reg.test('-003'))				// false
console.log(reg.test('3.'))					// false
console.log(reg.test('-003.02'))		// false
console.log(reg.test('+05a2.3'))		// false
验证密码
// => 数字, 字母, 下划线
// => 6~16位

let reg = /^[0-9a-zA-Z_]{6,16}$/;
let reg = /^\w{6,16}$/;
验证真实姓名
刘某某
邢某某
佛拉基米尔·某某某
佛拉基米尔·某某某·某某某

/**  
 *	1. 汉字(汉字的Unicode编码位 \u4E00-\u9FA5 )		/^[\u4E00-\u9FA5]$/
 *	2. 名字长度位 2~10 位
 *	3. 会有译名的出现, 以为·隔开
 */

let reg = /^[\u4E00-\u9FA5]{2,10}(·[\u4E00-\u9FA5]+){0,2}$/;
console.log(reg.test('刘某某'))										// => true
console.log(reg.test('邢某某'))										// => true
console.log(reg.test('佛拉基米尔·某某某'))					// => true
console.log(reg.test('佛拉基米尔·某某某·某某某'))		// => true
验证邮箱(分析)
let reg = 
    /^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;

/** 
 *	1. 出现在 @ 符号之前的, \w+((-\w+)|(\.\w+))*
 *		- 邮箱开头是数字丶字母丶下划线
 *		- 中间可以被 - 和 . 进行划分, 可以出现 0~多次 (xx.xx@ xx-xx@ xx.xx-xx@)
 *
 *	2. [A-Za-z0-9]+
 *		- 邮箱的域名 @qq @123con @xxx...
 *
 *	3. ((\.|-)[A-Za-z0-9]+)*
 *		-	对邮箱域名的补充, 有些邮箱格式是 xxx@123.456-ali  xxx@qq-226.youxiang
 *		- 多域名: 	 xxxxx@123.com.cn.net
 *		- 企业邮箱: xxxxx@123.youxiang-qiye.com
 *
 *	4. \.[A-Za-z0-9]+
 *		- 捕捉最后的邮箱域名 .cn .com .net .edu ...
 */
身份证号码验证
/** 
 *	1. 一共18位
 *	2. 最后一位可能是X
 *
 *	身份证前6位: 省市县
 *	中间八位: 年月日
 *	最后四位:
 *		- 前两位: 算法计算, 公安局编码
 *		- 第三位: 性别(单:男, 双:女)
 *		- 第四位: X或数字
 *	330109200012044322
 */

let reg = /^\d{6}(1|2)\d{10}(\d|X)$/;
console.log(reg.test('31610910001201132X'))
console.log(reg.test('130109201112041413'))


// () 配合 exec 还有一个作用为分组匹配
let reg = /^(\d{6})(\d{4})(\d{4})\d{2}(\d)(\d|X)$/;
console.log(reg.exec('31610910001201132X'))
// Array(6) [ "31610910001201132X", "316109", "1000", "1201", "2", "X" ]
// 第一个参数为匹配的字符串, 剩余的为()分组匹配出的结果
console.log(reg.exec('130109201112041413'))
// Array(6) [ "130109201112041413", "130109", "2011", "1204", "1", "3" ]
// 第一个参数为匹配的字符串, 剩余的为()分组匹配出的结果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值