正则表达式

本文介绍了正则表达式的基础知识,包括字符类别(如d匹配数字,w匹配字母数字下划线)、字符集合(如[ ]创建字符组,[^ ]匹配反义字符组)、边界(^匹配开头,$匹配结尾)以及量词(*、+、?、{n}等)。内容来源于MDN JS正则表达式和前端培训笔记。
摘要由CSDN通过智能技术生成

p1:推荐学习正则表达式的网站——MDN JS正则表达式

p2:本文绝大多数示例代码来自于“2018年开课吧的某一期前端培训笔记”,感谢老师~

一、字符类别

1. . (点字符):匹配一个除了回车符和换行符 (\r \n) 以外的任意字符

		    var reg=/./;
		    reg.test("a");      // 存在非换行符和回车符的字符 a,结果为 true
		    reg.test(".");      // 存在非换行符和回车符的字符 .,结果为 true
		    reg.test("\r");     // 该字符是一个回车符,结果为 false
		    reg.test("1\r");    // 存在非换行符和回车符的字符 1,结果为 true
		    reg.test("\r\n");   // 两个字符分别是回车符和换行符,结果为 false

2. \d:匹配一个数字

3. \D:与 \d 相反,匹配一个非数字的字符

4. \w:匹配一个字母、一个数字或一个下划线

5. \W:与 \w 相反,匹配一个除字母、数字、下划线以外的字符,如短横线、点、$符等

6. \s:匹配一个空白字符(例如:\r \n \t 空格)

7. \S:匹配一个空白字符(例如:数字、字母、各类非空白的符号)

8. \:转义字符,用于转义特殊的符号,如:/, .

字符含义
.匹配一个除了回车符和换行符 (\r \n) 以外的任意字符
\d匹配一个数字
\D与 \d 相反,匹配一个非数字的字符
\w匹配一个字母、一个数字或一个下划线
\W与 \w 相反,匹配一个除字母、数字、下划线以外的字符,如短横线、点、$符等
\s匹配一个空白字符(例如:\r \n \t 空格)
\S 匹配一个空白字符(例如:数字、字母、各类非空白的符号)
\转义字符,用于转义特殊的符号,如:/, .

二、字符集合

1. [ ]:匹配一个字符集合,也叫字符组。匹配集合中的任意一个字符。你可以使用连字符'-'指定一个范围。

		    
		    // 匹配一个字符,这个字符必须是:1/a/2/b/3其中一个
		    // 如果是就表示满足,如果不是就不满足
		    var reg=/[1a2b3]/;
		    reg.test("a");      	// 结果:true
		    reg.test("3");      	// 结果:true
		    reg.test("fg5678"); 	// 一个符合要求的字符都不存在,结果为:false
		    reg.test("a999999");    // 包含字母 a,结果为:true

2. [^ ]:匹配一个反义或补充字符集,也叫反义字符组。它匹配任意一个在括号内的字符。你也可以通过使用连字符 '-' 来指定一个范围内的字符。

		    // 匹配一个字符,但是这个字符既不是1 并且 不是2 并且 不是3
		    var reg=/[^123]/;    
		    reg.test("a");      // true
		    reg.test("3");      // false
		    reg.test("123");    // 没有1,2,3以外的字符,结果为:false
		    reg.test("a123");   // 存在一个符合条件的字母 a,所以结果为:true

三、边界

1. `^` 表示字符串最左边,常用于匹配字符串的开头
2. `$` 表示字符串最右边,常用于匹配字符串的结尾

	    var reg=/^abc/;     	// 匹配以 abc 开头的字符串
	    reg.test("123abc123");  // 不以 abc 开头,结果为 false
	    reg.test("abc123");     // 以 abc 开头,结果为 true

	    var reg=/abc$/;     // 匹配以 abc 结尾的字符串
	    reg.test("123abc"); // 以 abc 结尾,结果为 true
	    reg.test("abc123"); // 不以 abc 结尾,结果为 false
	    reg.test("123bc");  // 仅以 bc 结尾,不是以完整的 abc 结尾,结果为 false

四、量词

1. *:表示出现0次或多次,不常用

2. +:表示出现 1 次或多次(至少一次)

	    var reg=/1\d+/;
	    reg.test("1");      // 字符 1 后面没有字符了,结果为 false
	    reg.test("123");    // 字符 1 后面还有字符 2 和 3,结果为 true

3. ?:表示出现 0 次或一次

4. {n}:n 为任意自然数,表示出现 n 次

5. {n,}:n 为任意自然数,表示至少出现 n 次

6. {m,n}:m 和 n 为任意自然数,表示出现 m~n 次

7. |:表示或者,只要满足两个匹配规则中的一个即可

	    var reg=/abc|123/;  // 表示匹配 abc 或者 123
	    reg.test("abc456"); // 包含字符串 abc,结果为 true
	    reg.test("def789"); // 既不包含字符串 abc,也不包含 123,结果为 false

8. ():表示分组

	    // 匹配电话号码
	    var reg=/(\d{3,4})-(\d{7,8})/;
	    var arr="021-33335555".match(/(\d{3,4})-(\d{7,8})/)
	    arr[0]  // 全部
	    arr[1]  // 第一组:区号:021
	    arr[2]  // 第二组:号码:333355555
量词含义
*表示出现0次或多次,不常用
+表示出现 1 次或多次(至少一次)
?表示出现 0 次或一次
{n}n 为任意自然数,表示出现 n 次
{n,}n 为任意自然数,表示至少出现 n 次
{m,n}m 和 n 为任意自然数,表示出现 m~n 次
exp1|exp2表示或者,只要满足两个匹配规则中的一个即可
()表示分组

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值