正则表达式的学习方法

好好学习 ,天天向上。Are you ready?在这里插入图片描述

一. 什么是正则表达式?
限制字符串的一组正确的规则.
二. 正则表达式的作用?
表单验证
三. 如何定义正则表达式?
1. 字面量的方式 : /正则表达式/标志位 g :全局匹配 i : 不区分大小写,
2. 构造函数的方式: new RegExp(‘正则表达式’,‘标志位’);
四. 正则表达式对象的方法?
正则表达式对象.test(字符串) : 如果字符串中包含了正则表达式的内容,返回true,否则,返回false,
正则表达式对象.exec(字符串) : 如果字符串中包含了正则表达式的内容,返回数组,否则,返回null,

扩展: 字符串的方法,
字符串对象.match(正则表达式) : 如果字符串中包含了正则表达式的内容,返回数组,否则,返回null,
字符串对象.search(正则表达式) : 类似于indexOf(),查找正则匹配的内容在字符串中第一次出现的下标位置,如果没有找到,返回-1
字符串对象.replace()

exec与match的区别:
数组中第一个元素,返回的是整个正则表达式匹配到的字符串。
数组中第其它元素,是()这个组匹配到的字符串。
1. 无组无g时,都返回一个数组,数组元素只有一个匹配的内容。
var str = ‘how do you do’;
var re = /o/;
console.log(re.exec(str)); //[‘o’]
console.log(str.match(re)); //[‘o’]
2. 无组有g时,exec() 不受g的影响,只找第一个; match()受g的影响,返回所有匹配的内容
var str = ‘how do you do’;
var re = /o/g;
console.log(re.exec(str)); //[‘o’]
console.log(str.match(re)); //[‘o’,‘o’,‘o’,‘o’]
3. 有组无g时, exec和match相同,同时返回父级元素和子级元素。
var str = ‘how de you do’;
var re = /(de).+(do)/;
console.log(re.exec(str)); //[“de you do”,“de”,“do”]
console.log(str.match(re)); //[“de you do”,“de”,“do”]
4. 有组有g时,exec返回父级元素和子级元素;match只返回父级元素
var str = ‘how de you do’;
var re = /(de).+(do)/g;
console.log(re.exec(str)); //[‘de you do’,‘de’,‘do’]
console.log(str.match(re)); //[‘de you do’]
五. 正则表达式的元字符? 三三二三个一
三 : {} [] ()
{} : 表示{}前面的一个或一组字符串连续出现的次数
{m} : 表示{}前面的一个或一组字符串连续出现m次
var str = ‘dooo’;
var re = /^do{3} / ; c o n s o l e . l o g ( r e . t e s t ( s t r ) ) ; m , : 表 示 前 面 的 一 个 或 一 组 字 符 串 连 续 出 现 至 少 m 次 。 m   无 限 v a r s t r = ′ d o o o o o o o ′ ; v a r r e = / d o 3 , /; console.log(re.test(str)); {m,} : 表示{}前面的一个或一组字符串连续出现至少m次。 m ~ 无限 var str = 'dooooooo'; var re = /^do{3,} /;console.log(re.test(str));m,:mm varstr=dooooooo;varre=/do3,/;
console.log(re.test(str));
{m,n} : 表示{}前面的一个或一组字符串连续出现至少m次,最多n次 m~n
var str = ‘dooooo’;
var re = /^do{3,5}$/;
console.log(re.test(str));

[] : 表示范围
var str = ‘abcab’;
var re = /1{3,5}$/;
console.log(re.test(str));

	var str = 'eee';
	var re = /^[a-z]{3,5}$/;
	console.log(re.test(str));
	
	var str = 'Aee';
	var re = /^[a-z]{3,5}$/i;   //i : 不区分大小写
	console.log(re.test(str));
	
	var str = 'Aee';
	var re = /^[a-zA-Z]{3,5}$/;  
	console.log(re.test(str));
	
	var str = '110';
	var re = /^[0-9]{3,5}$/;  
	console.log(re.test(str));
	
	var str = '10019';
	var re = /^[0-9]{6}$/;  
	console.log(re.test(str));
	if(!re.test(str)){
		alert('您输入的邮编错误!');
	}
	
	
	var str = 'abc123_';
	var re = /^[0-9a-zA-Z_]{6,12}$/;  
	console.log(re.test(str));
	if(!re.test(str)){
		alert('您输入的邮编错误!');
	}
	
	var str = '3333333';
	var re = /^[0-9a-zA-Z_]{6,12}$/;  
	console.log(re.test(str));
	if(!re.test(str)){
		alert('您输入的邮编错误!');
	}
	
	var str = '王小二';
	var re = /^[\u4e00-\u9fa5]{3,6}$/;  
	console.log(re.test(str));
	if(!re.test(str)){
		alert('您输入的邮编错误!');
	}
	
() : 表示组
	var str = 'dododo';
	var re = /^(do){3,6}$/;  
	console.log(re.test(str));
	if(!re.test(str)){
		alert('您输入的邮编错误!');
	}

三、 * + ? : 限制符号前面的一个或一组字符串连续出现的次数
* : 表示前面的一个或一组字符串连续出现至少 0 次,最多 无限次 相当于{0,}
var str = ‘how’;
var re = /^(do)
/ ; c o n s o l e . l o g ( r e . t e s t ( s t r ) ) ; + : 表 示 + 前 面 的 一 个 或 一 组 字 符 串 连 续 出 现 至 少 1 次 , 最 多 无 限 次 相 当 于 1 , v a r s t r = ′ d o d o d o d o d o ′ ; v a r r e = / ( d o ) + /; console.log(re.test(str)); + : 表示+前面的一个或一组字符串连续出现至少 1 次,最多无限次 相当于{1,} var str = 'dododododo'; var re = /^(do)+ /;console.log(re.test(str));+:+11,varstr=dododododo;varre=/(do)+/;
console.log(re.test(str));
?:表示?前面的一个或一组字符串连续出现至少0次,最多1次 相当于{0,1}
var str = ‘d’;
var re = /^(do)?$/;
console.log(re.test(str));
二、 ^ $
^ : 1. 如果放在正则表达式的开头部分: 表示定头(断头),限制字符串的开头字符。
var str = ‘d’;
var re = /^d(do)?KaTeX parse error: Double superscript at position 93: … var re = /^[^̲0-9]+/;
console.log(re.test(str));
$ : 表示定尾(断尾),限制字符串的结束字符
var str = ‘how do you do’;
var re = /[0-9]+doKaTeX parse error: Expected 'EOF', got '\ ' at position 53: …个一、 . | \̲ ̲ . : 表示模糊匹配任意一…/;
console.log(re.test(str));

		var str = 'howdo youdo.';
		var re = /^(.o.)+$/;  
		console.log(re.test(str));
	
	| : 表示或者
		var str = '女';
		var re = /^(男|女)$/;  
		console.log(re.test(str));
		
		var str = '中国';
		var re = /^((中国)|(俄罗斯)|(德国))$/;  
		console.log(re.test(str));
	
	\ : 转义符
	
		var str = '.rmvb';
		var re = /^\.[a-z0-9]{2,4}$/i;  
		console.log(re.test(str));
	\s : 空白符
		var str = 'how are you';
		var re = /^.+\s.+\s.+$/i;  
		console.log(re.test(str));
	\S : 非空白符
	\d : 表示数字 相当于[0-9]
		var str = '100193';
		var re = /^\d{6}$/;  
		console.log(re.test(str));
	\D : 表示非数字 相当于[^0-9]
	\w : 表示字母、数字、下划线 相当于[a-zA-Z0-9_]
	\W : 表示非(字母、数字、下划线)相当于[^a-zA-Z0-9_]
	\b : 表示单词边界
		var str = 'howb do';
		var re = /\bdo\b/;  
		console.log(re.test(str));
		
		var str = 'how do you do';
		var re = /do\b/;  
		console.log(re.test(str));

六. 扩展案例

June 6,2014 /2+ \d{1,2},\d{4}KaTeX parse error: Expected 'EOF', got '\w' at position 65: …许全部是字母。 /^[a-z]\̲w̲{2,9}/

/(^\s+)|(\s+$)/
’ a b ’

qq.com
123.com.cn
\w+@\w+.[a-z]{3}(.[a-z]{2})?

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


  1. abc ↩︎

  2. a-z ↩︎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值