JavaScript正则表达式轻松入门

0x00 教程内容

  1. 概括
  2. 正则表达式的创建方式
  3. 正则表达式模式
  4. 实用例子

0x01 概括

1. 概念

a. 官方解释:
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
搜索模式可用于文本搜索和文本替换。

b. 白话解释:
拿来匹配文本的,可更方便地用来搜索或者替换。

2. 为什么要学习正则表达式

a. 下面的对比例子可看出,正则表达式非常方便
需求:找出定义的字符串里面的数字

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script type="text/javascript">
			//定义所需要搜索的字符串
			var str = 'wechat:shaonaiyi888,520777';
			//方法1、不使用正则表达式
			function findNum(str) {
				var tmp = '',
					arr = [];
				for(var i = 0; i < str.length; i++) {
					var current = str[i];
					if(!isNaN(current)) {
						tmp += current;
					} else {
						if(tmp) {
							arr.push(tmp);
							tmp = '';
						}
					}
				}
				if(tmp) {
					arr.push(tmp)
				}
				return arr;
			}
			console.log("不使用正则表达式:" + findNum(str))
			//"不使用正则表达式:888,520777"
			//方法2、使用正则表达式
			var reg = /\d+/g;
			console.log("使用正则表达式:" + str.match(reg))
			//"使用正则表达式:888,520777"
		</script>
	</head>
	<body>
		邵奈一的CSDN技术博客:https://blog.csdn.net/shaock2018
	</body>
</html>

0x02 正则表达式的创建方式

语法:
/正则表达式/修饰符(可选)
修饰符:

修饰符描述
iignoreCase:执行对大小写不敏感的匹配。
gglobal:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
mmultiline:执行多行匹配。
1. 字面量创建方式

a. 格式:var reg = /正则表达式主体/修饰符
b. 实例:

var reg = /\d+/g;
2. 实例创建方式

a. 格式:var reg = new RegExp(正则表达式,修饰符);
b. 实例:

var reg = new RegExp('\\d');
3. 两种创建方式的区别

a. 实例创建方式可进行字符串拼接,字面量创建方式则不行

var regParam = 'ny';
var reg1 = new RegExp(regParam+'1');
var reg2 = /regParam/;
console.log(reg1);  //   /ny1/
console.log(reg2);  //  /regParam/

b. 实例创建方式特殊含义的字符需要转义,字面量创建方式不需要转义

var reg1 = new RegExp('\d');  //    /d/ 
var reg2 = new RegExp('\\d')  //   	/\d/
var reg3 = /\d/;              // 	/\d/

0x03 正则表达式模式

1. 表达式

a. 方括号用于查找某个范围内的字符:

表达式描述
[abc]查找方括号之间的任何字符。
[0-9]查找任何从 0 至 9 的数字。
(x|y)查找任何以
2. 元字符

a. 元字符是拥有特殊含义的字符:

元字符描述
\d查找数字。
\s查找空白字符。
\b匹配单词边界。
\uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符。
3. 量词

a. 量词:

量词描述
n+匹配任何包含至少一个 n 的字符串。
n*匹配任何包含零个或多个 n 的字符串。
n?匹配任何包含零个或一个 n 的字符串。
4. 分组符
分组符描述
()提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。
[]匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。
{}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s[1,3]表示匹配一到三个空格。

0x04 实用例子

1. 入门例子与详解
var str1 = 'Hi,hi,hi shaonaiyi,Hello';
//g:修饰符,表示全局匹配;\b是一个元字符,代表单词边界,匹配单词的开头和结尾。
//1、实例创建方式:
var reg1 = new RegExp("\\bhi\\b", "g"); 
//2、字面量创建法:
reg2 = /\bhi\b/gi;
console.log(str1.match(reg1)); //"hi,hi"
console.log(str1.match(reg2)); //"Hi,hi,hi"
//匹配shenzhen,并匹配后面的shaonaiyi
var str2 = /\bshenzhen\b.*\bshaonaiyi\b/;
var welcome = 'I love shenzhen,shaonaiyi!!';
console.log(welcome.match(str2));//"shenzhen,shaonaiyi"

0xFF 总结

  1. 正则表达式可以提高我们的效率,更提高我们的代码的质量,不仅仅是JavaScript,java、python、php等等都会使用到正则表达式,所以说,也是非常关键的。
  2. 正则表达式最常用的作用之一是用于前端,判断邮箱、手机号码、email地址等的格式是否合理,当然还有很强大的功能,自行搜索了解。

作者简介:邵奈一
全栈工程师、大学市场洞察者、专栏编辑
公众号、微博、CSDN邵奈一
本系列课均为本人:邵奈一原创,如转载请标明出处

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值