js regular expressions and exercises (super detailed)

1. Create a regular expression

1.1 Use the constructor to create

//创建正则表达式对象
			
			var re = new RegExp("正则表达式","匹配模式");
			
		   //可以传递第二个参数:匹配模式
		   i:忽略大小写,
		   g:全局匹配模式
		   m:多行匹配
test()
			-使用这个方法可以用来检查一个字符串是否符合正则表达式的规则,
				如果符合则返回true,
				否则返回false
 //用来检查字符串中是否含有a
		   var reg2 = new RegExp("a","i");
		   console.log(reg2.test("Asssshjk"));

1.2 Use literals to create a regular expression

//使用字面量创建正则表达式
			//var reg3 = /正则表达式/匹配模式
			var reg4 = /a/i
			
			使用字面量的方式创建更加简单
			使用构造函数创建更加灵活

2. Matching rules


			 * 1.	|  	  表示或
			 * 2.	[]    中括号里也是或的关系	[ab] == a|b;
			 * 3.	[a-z] 任意小写字母   
			 * 4.	[A-z] 任意字母
			 * 5.	[^ ]  除了***以外
			 * 6.	[0-9] 任意数字
			 * 7.	.	  查找单个字符,除了换行和行结束符
			 * 
			 * 8.	\w	 任意字母数字下划线
			 * 9.	\W	 除了字母数字下划线
			 * 10.	\d	 [0-9]
			 * 11.	\D	 [^0-9]
			 * 12.	\s	 空格
			 * 13.	\S	 除了空格
			 * 
			 * 14.	\b	 单词边界
			 * 15.	\B	 除了单词边界
			 * 
			 *
			 
			  * 1. /ab{
    
    1,3}/	:出现一次到三次
			  * 2. /ab{
    
    3}/		:出现三次
			  * 3. /(ab){
    
    3}/		:ab一起出现三次
			  * 4. /{
    
    m,}/		:出现m次以上. //		:出现m次以上
			  * 5. +			:至少一个
			  * 6. *			:0个或多个
			  * 7. ?			:0个或一个
			  * 8. ^			:***开头,他和[]里的^不一样
			  * 9. $			:***结尾
			  * 
			  *  查找./的话需要/进行转义
			  * 
//匹配abc|adc|aec 
			 var reg = /a[bde]c/i;
			 //[^ab]
			 console.log(reg.test("abc"));   //-->true  除了ab以外还有c

3. Matching method

1.match()
2.search()
3.replace()
4.split()
 1.match()
			-可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
			-默认情况下我们的match只会找到第一个符合要求的内容,找到以后就停止检索
			我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容
			他会将结果封装到一个数组里面
			
			  var str3 = "aBcd125efgh1ijk4561lmnopqrst145uvwxyz";
			  var res3 = str3.match(/[A-z]/gi);
			  console.log(res3);
			  
			  //可以为一个正则表达式设置多个匹配模式
2.search()
			 * -搜索字符串中是否含有“**** -与split()相同的是他可以传一个正则表达式进去
			 * search():不能全局匹配,哪怕你指定全局匹配,依然没什么卵用,他只匹配第一个

			 var str2 = "abc def ghi jjk";
			 var res2 = str2.search(/g[hjkl]i/);
			 console.log(res2);
			 //搜索到会返回索引,没有搜索到会返回-1
3.replace()
				-可以将字符串中指定内容替换为新的内容
				-参数:
				1.被替换的内容
				2.新的内容
4.split()
			-可以将一个字符串拆分为一个数组
			-方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串
			
			var str = "1a2b3c4d5e6f7";
			var res = str.split(/[a-z]/i);
			console.log(res);

/**
				* 量词:
				* {} :表示刚好出现几次
				* 量词只对他前面的一个内容起作用*/
				
				var reg5 = /^a$/;
				console.log(reg5.test("aaa"));   //false
				console.log(reg5.test("a"));   //true

				//注意转义字符
				var reg7 = /\//ig;
				console.log("***"+reg7.test("/"));

4. Practice

4.1 Identify mobile phone number

//小练习:识别手机号
			var reg6 = /^1[34578][0-9]{9}$/
			var num = 13456524623;
			console.log(reg6.test(num))
			//必须加上以**开头和结尾,不然可能位数不对,或者手机号码在中间包含的

4.2 Match the word child

//匹配单词child
			//注意单词边界
			var regg = /\bchild\b/;
			console.log(regg.test("hello child"));

4.3 Remove the spaces in the string

//练习:去掉字符串中的空格
			var str = "    hell oo   i    ";
			//匹配开头空格
			str = str.replace(/^\s*/,"");
			//匹配结尾空格
			str = str.replace(/\s*$/,"");
			//那整合到一起呢
			str = str.replace(/^\s*|\s*$/g,"");
			console.log(str); 

4.4 matching mailbox

官方
			hello.nihao@qq.com.cn
			任意字母数字下划线 . 任意字母数字下划线 @ 字母数字 . 	字母{
    
    2,5}.字母{
    
    2,5}
			\w{
    
    3,}			(\.\w+)*			@  [A-z0-9]+  	(\.[A-z]{
    
    2,5}){
    
    1,2}  
																//后面的可以出现一到两次
			var regt2 = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/gi;
			console.log(regt2.test("[email protected]"));

Guess you like

Origin blog.csdn.net/weixin_44154094/article/details/112685412