正则表达式知识点总结

一. 什么是正则表达式? 是用于匹配字符串的一组规则.
二. 主要用于表单验证,其它在匹配字符串时也会用到.
三. 如何创建正则表达式?
1. 字面量: /正则表达式/标志位 ,
2. 构造函数的方式: new RegExp(‘正则表达式’,‘标志位’)

标志位:  g  : 表示全局匹配,
		i  : 表示不区分大小写

//	var re = /金山/g;
var ss = prompt('请输入一组限制的规则:');
var re = new RegExp(ss,'g');  //g : 标志位,表示全局匹配
var oTxt = document.getElementById("txt");
oTxt.onblur = function(){
	var str = oTxt.value;
	if(re.test(str)){
		oTxt.value = str.replace(re,'*');
	}
}

四. 正则的元字符(三三二三个一)
三 : {} [] ()
{} : 表示{}前面的一个或一组字符连续出现的次数,
{m} : 表示{}前面的一个或一组字符连续出现m次,
var re = /^o{3} / ; v a r s t r = ′ o o o ′ ; c o n s o l e . l o g ( r e . t e s t ( s t r ) ) ; m , : 表 示 前 面 的 一 个 或 一 组 字 符 连 续 出 现 m 至 无 限 次 , v a r r e = / o 3 , /; var str = 'ooo'; console.log(re.test(str)); {m,} : 表示{}前面的一个或一组字符连续出现m 至 无限次, var re = /^o{3,} /;varstr=ooo;console.log(re.test(str));m,:m,varre=/o3,/;
var str = ‘ooooooo’;
console.log(re.test(str));
{m,n} : 表示{}前面的一个或一组字符连续出现m 至 n次,
var re = /^o{3,5}$/;
var str = ‘oooo’;
console.log(re.test(str));

[] : 表示范围,
	var re = /^[abc]{3,5}$/;
	var str = 'aaaa';
	console.log(re.test(str));
	
	var re = /^[abc]{3,5}$/;
	var str = 'aabbb';
	console.log(re.test(str));
	
	var re = /^[a-z]{3,5}$/;
	var str = 'how';
	console.log(re.test(str));
	
	var re = /^[a-zA-Z]{3,5}$/;
	var str = 'How';
	console.log(re.test(str));
	
	var re = /^[0-9]{3,5}$/;
	var str = '11111';
	console.log(re.test(str));
	
	var re = /^[0-9a-zA-Z_!@,]{6,12}$/;
	var str = 'aaa2!,';
	console.log(re.test(str));
	
	var re = /^[\u4e00-\u9fa5]{2,}$/;
	var str = '刘绑';
	console.log(re.test(str));
	
() : 表示组,
	var re = /^(do){2,}$/;
	var str = 'dodododo';
	console.log(re.test(str));

三:  *   +   ?,
* : 相当于{0,} 表示*前面的一个或一组字符连续出现0 至 无限次,
	var re = /^(do)*$/;
	var str = '';
	console.log(re.test(str));
+ : 相当于{1,} 表示+前面的一个或一组字符连续出现1 至 无限次,
	var re = /^(do)+$/;
	var str = 'dododo';
	console.log(re.test(str));
? : 相当于{0,1} 表示?前面的一个或一组字符连续出现0 至 1次,
	var re = /^(do)?$/;
	var str = 'do';
	console.log(re.test(str));
	
二:  ^  $,
^ : 1. 写在正则表达式的开头部分,表示限制字符串的开头字符,

	var re = /^(do)?/;
	var str = 'aaaaaaaaa';
	console.log(re.test(str));
	2. 写在[]的开头部分,表示将[]中的内容取反
	var re = /^[^0-9]+$/;
	var str = 'aaaaaaaaa';
	console.log(re.test(str));
$ : 表示限制字符串的结尾字符,
	var re = /[^0-9]+$/;
	var str = '34567890aaaaaaaaa';
	console.log(re.test(str));

三个一:    .   |    \,
. : 表示模糊匹配任意一个字符,
	var re = /^h.w$/;
	var str = 'h#w';
	console.log(re.test(str));
| : 表示或, (或一般结合组一起使用)
	var re = /^(男|女)$/;
	var str = '男';
	console.log(re.test(str));
\ : 转义符,

\s : 空白符,
\S : 非空白符,
\d : 数字 [0-9],
\D : 非数字 [^0-9],
\w : 字母数字下划线,
\W : 非字母数字下划线,
\b : 单词边界,

var re = /^\.[a-z\d]{1,4}$/i;
var str = '.html';
console.log(re.test(str));

var re = /\bdo\b/i;
var str = 'how 1do you do';
console.log(re.test(str));

五. 正则表达式的方法
1. 正则表达式对象.test(字符串) : 测试字符串是否匹配正则表达式,如果匹配,返回true,如果没不匹配,返回false,
2. 正则表达式对象.exec(字符串) : 测试字符串是否匹配正则表达式,如果匹配,返回匹配到的内容数组,如果没有,null
六. 字符串测试正则的方法
1. 字符串对象.match(正则表达式) : 测试字符串是否匹配正则表达式,如果匹配,返回匹配到的内容数组,如果没有,null,
2. 字符串对象.search(正则表达式) : 在字符串中查找正则匹配的内容第一次出现的下标位置,如果没有,返回-1,

//1. 无组无g的情况 (只获取第一个匹配到内容)
var re = /do/;
var str = 'how do you do';
console.log(re.exec(str));  //['do']
console.log(str.match(re)); //['do']

//2. 无组有g  (exec不受g的影响,只获取一个。match受g的影响,获取字符串所有匹配到的内容。
var re = /do/g;
var str = 'how do you do';
console.log(re.exec(str));  // ['do']
console.log(str.match(re)); // ["do", "do"]

//3. 有组无g  (获取一个父级:整个正则匹配到的内容,子级: 有几个组,则返回几个组匹配到的内容)
var re = /d(o)w/;
var str = 'how dow you dow';
console.log(re.exec(str));  // ["dow", "o"]
console.log(str.match(re)); // ["dow", "o"]

//4. 有组有g (exec不受g的影响;match:返回匹配到的所有父级,没有子级)
var re = /d(o)w/g;
var str = 'how dow you dow';
console.log(re.exec(str));  // ["dow", "o"]
console.log(str.match(re)); // ["dow", "dow"]


var re = /([a-z]+) (\d+)/g;
var str = 'aa 11 bb 22 cc 33';
console.log(re.exec(str));  // ["dow", "o"]
console.log(str.match(re)); // ["dow", "dow"]



邮政编码检测  
/^\d{6}$/
文件格式检测
/^\.[a-z0-9]{1,4}$/i
字符串首尾去空格
/(^\s+|\s+$)/g
邮件格式检测   xxxxxx@xxx.xxx[.xx]
/^\w+@\w+\.[a-z]{2,3}(\.[a-z]{2,3})?$/
//手机号
/^\d{11}$/
/^1(2|3|5|6|7|8|9|4)\d{9}$/
身份证号
/^[1-9]\d{5}[2-9]\d{3}(0[1-9] |1[0-2])(0[1-9]|(1|2)\d|3[01])\d{3}(\d|x|X)$/

用户名由 3-10 位的字母下划线和数字组成。不能以数字或

下划线开头。只能已字母开头。允许全部是字母。
/1\w{2-9}$/

https://www.baidu.com/
/^(https|http):\/\/\w+\.\w+\.[a-z]{2,3}$/

  1. a-z ↩︎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值