2020-08-19

JavaScript正则表达式

概念: *正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式
            *用某种模式去匹配一类字符串的公式

作用: 1. 测试字符串内的模式;
            2. 替换文本;
            3. 从字符串中提取字符串

语法: 构造函数:var reg = new RegExp(pattern,modifies)
            字面量:var reg = /pattern/modifies
      注:pattern:正则表达式;modifies:修饰符

方法: 检测一个字符串是否与正则相匹配:reg.test(string)reg.exec(string)

          举个例子:

// reg.test(string)和reg.exec(string)
var str = 'abc';
var reg = /[a-z]/;
console.log(reg.test(str));  //true
console.log(reg.exec(str));  //["a",index:0,input:"abc"]
//我们可以看出reg.test(str)返回的是一个布尔值,而reg.exec(str)返回的是一个数组

方法(String类中可以支持正则表达式的方法):

方法描述
search检索与正则表达式相匹配的值
match找到一个或多个正则表达式的匹配
replace替换与正则表达式匹配的子串
split把字符串分割为字符串数组

          举些例子:

//search:检索字符串  --> 返回匹配字符串的下标;否则返回-1
		var str = "hello reg";
		console.log(str.search(/h/));  //0
		console.log(str.search(/w/));  //-1
		console.log(str.search(/r/));  //6
		console.log(str.search(/REG/i));  //6

		//match:检索字符串中的所有数字  --> 未匹配到任何文本,返回null;否则,返回一个数组(依赖于全局标志g) 
		var str = "1 and 2 and 3";
		console.log(str.match(/\d/));  //["1", index: 0, input: "1 and 2 and 3", groups: undefined]
		console.log(str.match(/\d/g));  //["1", "2", "3"]
		console.log(str.match(/REG/g));  //null

		//replace:替换字符串的内容  -->  返回一个新的字符串
		var str = "hello huzi"
		console.log(str.replace(/huzi/,"wangzi"));  //hello wangzi
		var str = "hi hujing, hello hujing";
		console.log(str.replace(/hujing/g,"wanghai"));  //hi wanghai, hello wanghai

		//split:把单词分割为字母  --> 返回一个字符串数组
		var str = "hello";
		console.log(str.split(""));	 //["h", "e", "l", "l", "o"]
		console.log(str.split("",3));  //["h", "e", "l"]

参数:

参数描述
i忽略大小写
g全局匹配
gi全局匹配且忽略大小写
m执行多行匹配

常用表达式:

表达式描述
[a-z]查找任何从小写a到小写z的字符
[A-Z]查找任何从大写A到大写Z的字符
[0-9]查找任何从0到9的数字
[abc]查找括号内的任意一个字符
[^abc]查找除了括号内的任意字符

常见元字符(特殊字符):

元字符描述
\w匹配数字、字母和下划线
\W匹配非数字、字母和下划线
\s匹配空白字符(空格、换行)
\S匹配非空白字符
\d匹配数字
\D匹配非数字
\n匹配换行符
.匹配除换行符以外任何的单个字符
^匹配行首的文本
$匹配行尾的文本

常见的限定符:

限定符描述
*匹配前面子表达式零次或多次
+匹配前面子表达式一次或多次
匹配前面子表达式零次或一次
{n}匹配确定的n次
{n,}至少匹配n次
{n,m}最少匹配n次且最多匹配m次

          举些例子:

// 验证26个英文字母组成的字符串
		var str = "asdfdfdsdSDADSAdsaDSADA";  //true
		// var reg = /[a-zA-Z]/;
		// var reg = /^[a-zA-Z]$/;  //false
		// var reg = /^[a-zA-Z]+$/; //true
		console.log(reg.test(str));  
		//验证由数字和26个英文字母组成的字符串
		var str = "123dsadaSDSA123fdFS";
		// var reg = /[0-9a-zA-Z]/;  //true
		// var reg = /^[0-9a-zA-Z]+$/;  //true
		// var reg = /^[0-9a-zA-Z]$/;  //false	
		console.log(reg.test(str));
		//验证由数字、字母和下划线组成的字符串
		var str = "123_sdas_123_asds";
		// var reg = /\w/;  //true
		// var reg = /^\w$/; //false
		var reg = /^\w+$/;  //true
		console.log(reg.test(str));  //true
		//验证汉字
		var str="王心怡";
		var reg = /^[\u4e00-\u9fa5]+$/;
		console.log(reg.test(str));  //true

注: 验证汉字:[\u4e00-\u9fa5]
快速记忆:有事100 有就发我

附言:看完这些自己应该会有了一个正确的了解,当然还需要继续练习。一起加油!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值