前言
在编程学习的道路上正则表达式的运用是非常的方便,让我们在匹配字符串,数据等方面有很大的帮助,今天给大家分享一些关于正则表达式的知识!
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
一.基础知识
正则语法:
一.字符类
1.点
.点:匹配任何字符不包括换行
2.字母,数字,下划线,空白的匹配与非匹配
\w: 匹配字母,数字,下划线 \W: 匹配非字母,数字,下划线
\d: 匹配任意数字(0-9) \D: 匹配任意非数字字符
\s: 匹配任何空白字符 \S: 匹配任何非空白字符
注意:(匹配其中任意一个)注意禁用全局标识的时候,RegExr会为了避免无穷个匹配结果而只返回第一个结果
3.字符集
[ABC]:匹配集合中的任何字符
4.范围
[A-Z] 匹配ASCII码在指定范围区间字符
[0-9]匹配0-9范围内的数字
5.完全通配
[\s\S]:可以用来匹配所有字符,包括换行符,
另外一种形式是[^], 但是它不被所有浏览器支持
二.多选和量词
(1)多选
*匹配0个或n个前面的标记
+匹配1个或n个前面的标记。
?匹配0个或1个前面的标记
| 多选:匹配|前面的或后面的表达式。(类似于js中||运算符)
(2)量词
匹配指定数量个前面的标
{1,3} 会匹配1个到3个
{3} 会匹配正好3个
{3,} 会匹配3个或更多
三.括号匹配
()通常一个括号里的内容为一个整体
例如:(abc)* 是匹配0个或n个abc整体
abc* 里*只作用与c一个字符,而不是整体
四.正则表达默认是贪婪匹配,会尽量多的匹配
解决方案: ? 让其尽可能少地匹配字符
例如:a good boy and a good girl
/a.*a/ 会匹配到 a good boy and a 是贪婪的
/a.*?a/ 会匹配到 a good boy a 会尽可能少的匹配
五.匹配开头与结尾
^ 匹配一行的开头 这个会匹配到位置,而不是字符。
$ 匹配字符串结尾 这个会匹配到位置,而不是字符。
二.部分代码示例
注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)
(1)构造一个正则对象
var re=new RegExp("\\wjw")
var re2=/\wjw/
console.log(re);// 结果:\wjw\
console.log(re2);//结果:\wjw\ re和re2是等价的
(2)三种匹配方式
//三种匹配方式 i
//1.大小写不敏感的匹配 i
let str1="WJw hhJIAwei"
let str1_match=str1.match(/hhjiawei/i)
console.log(str1_match);
//2.全局匹配 g
var str2="Is this all there is?";
var str2_match=str2.match(/is/g)
console.log();//注意:join方法将正则匹配的数组以字符串形式展现
//3.执行多行匹配 m m 修饰符可以使 ^ 和 $ 匹配一段文本中每行的开始和结束位置。
// g 只匹配第一行,添加 m 之后实现多行。
var str3="wjwhhhlaikegoogle\nwjwbao\nwjibo";
var str3_match1=str3.match(/^wjw/g); // 匹配一个
var str3_match2=str3.match(/^wjw/gm); // 多行匹配
console.log(str3_match1);
console.log(str3_match2);
输出结果:
第一行输出为str1_match
第二行输出为str2_match
第三行输出为str3_match1
第四行输出为str3_match2
(3)查找方括号之间的任何字符[abc]
var str4="Is this all there is?";
var str4_match=str4.match(/[asie]/g);//采用了全局匹配
console.log(str4_match);
输出结果
(4)查找不在方括号之间的任何字符[^abc]
var str5="Is this all there is?";
var str5_match=str5.match(/[^asie]/g);
console.log(str5_match);
输出结果:
结语:由于匹配语法知识很多种,就不一 一举例了,大家可以像我这样在编辑器中根据语法练习,在实践中学会正则表达式。
注意:上述的基础知识只是正则表达常用的,不代表所有知识,但是博主推荐正则学习至少掌握我给大家列的这些知识!想要学习正则表达其他更全面的知识,给大家推荐一个很学习正则表达式的网站:
https://regexr-cn.com/
基本能满足你的所有正则知识学习需求
希望今天分享的内容对大家有所帮助!!!!