提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
正则表达式
前言
正则表达式是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本
提示:以下是本篇文章正文内容,下面案例可供参考
一、js中的正则表达式是做什么用的?
正则表达式(regular expression,简称RegExp),描述字符串的对象,表达文本模式的方法
有强大的’模式匹配’和’文本检索与替换’功能
二、正则表达式特点
- 灵活性、逻辑性、功能性强
- 可迅速用极简方式操作复杂字符串
三、正则表达式的创建
方式1:字面量方式
效率高 编译直接新建正则
语法: var 变量名 = /正则表达式/[匹配模式];
实例: var reg = /a/;
方式2:RegExp构造函数
不推荐 构造运行时新建正则
语法: var 变量名 = new RegExp("正则表达式" [, "匹配模式"]);
实例:var reg = new RegExp("a");
检索指定字符串是否匹配
语法: RegExp.prototype.test(匹配的字符串)
作用:执行检索,返回 true 或 false
实例:var reg = /a/; // 表示含有"a"字符串就符合规则
输出: console.log(reg.test("abc")); //true
四、正则表达式字符
正则组成: 正则可简单字符构成,比如 /abc/ ,也可和特殊字符(元字符)组合,比如 /ab*c/
正则手册: https://jquery.cuishifeng.cn/regexp.html
(1)边界符
^ | 表示匹配行首的文本(以谁开始) |
---|---|
$ | 表示匹配行尾的文本(以谁结束) |
代码示例:
//含有a
var reg1 = /a/;
console.log(reg1.test("a")); // true
//以a开头
var reg = /^a/;
console.log(reg.test("a")); //true
// 以a结尾
var reg3 = /a$/;
console.log(reg3.test("a")); //true
// 同时使用^和$,精确匹配
var reg4 = /^a$/;
console.log(reg4.test("a"));
(2)字符类
正则字符 | 解析 |
---|---|
[cat] | 方括号:匹配c,a,t任意一个 |
[^cat] | 取反符:匹配除c,a,t以外的字符 |
[^a-z] | 范围符:匹配a~z范围外的字符 |
[a-zA-Z0-9] | 字符组合 : 匹配大小写字母和0-9字符 |
(3)量词符
设定某个模式出现的次数,是修饰"前面字符"出现的次数
简单栗子理解: 就是让下面a重复多少次
var reg = /^a$/; // 精确匹配
var reg = /^a{2}$/; // 精确匹配,a出现2次
(4)括号字符
中括号[ ] 表示字符集和,匹配里面任意字符
大括号{ } 表示量词符,里面重复出现的次数
小括号( ) 表示优先级,里面的内容称为子表达式
组匹配 分组使用()表示
功能: 把多个原子组在一起,成一个大原子
var reg1 = /^abcabc{2}$/;
console.log(reg1.test("abcabcc")); //最后一个字符出现两次
var reg2 = /^(abc){3}$/;
console.log(reg2.test("abcabcabc")); //整个abc出现3次
// 字符串类
// [] 方括号 表示可供选择其中一个
var reg1 = /[zhang0123]/;
console.log(reg1.test("z"));
(5)预定义类
预定义类: 就是一些字符串组合的快捷方式
注意: 预定义类表示单个字符
代码可以自己动手试试
// \w 匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”
var reg = /^\w{2}$/;
console.log(reg.test("aa"));
console.log(reg.test("A5"));
console.log(reg.test("A_"));
console.log(reg.test("A_A"));
console.log(reg.test("5-"));
// \W 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”
var reg = /^\W{2}$/;
console.log(reg.test("aa")); //false
console.log(reg.test("AB")); //false
console.log(reg.test("23")); //false
console.log(reg.test("__")); //false
console.log(reg.test("@@")); //true
console.log(reg.test("$$")); //true
console.log(reg.test("$a")); //true
console.log(reg.test("$5")); //true
// \d 匹配一个数字字符。等价于[0-9]
var reg = /^\d{2}$/;
console.log(reg.test("00")); // true
console.log(reg.test("19"));
console.log(reg.test("99"));
console.log(reg.test("8a")); //false
console.log(reg.test("8a5"));
console.log(reg.test("85a"));
// \D 匹配一个非数字字符。等价于[^0-9]
var reg = /^@\D{2}@$/;
console.log(reg.test("@aa@"));
console.log(reg.test("@12@"));
console.log(reg.test("@a2@"));
console.log(reg.test("@@@@"));
console.log(reg.test("@AA@"));
console.log(reg.test("@--@"));
console.log(reg.test("@ @"));
// \s 表示一个空白字符(空格 tab制表符,换页符\f,换行符\n,回车符\r 等)
var reg = /^a\sb$/;
console.log( reg.test("a b"));
// vscode打的tab制表符,会转成对应的空格
console.log( reg.test("a b") );
// 记事本打的tab键
console.log( reg.test("a b") );
console.log( reg.test("a\fb") );
console.log( reg.test("a\nb") );
console.log( reg.test("a\rb") );
// \S 表示一个非空白字符
var reg = /^a\Sb$/;
console.log( reg.test("abb") );
console.log( reg.test("a1b") );
console.log( reg.test("a@b") );
console.log( reg.test("a-b") );
console.log( reg.test("a_b") );
console.log( reg.test("a b") );
console.log( reg.test("a\fb") );
console.log( reg.test("a\nb") );
console.log( reg.test("a\rb") );
console.log( reg.test("a b") );
// \b 表示单词边界
// 以下内容可以当作单词边界:
// 1. 空格
// 2. 某句的开始
// 3. 某句的结束
// \B表示非单词边界
// replace()方法 replaceAll()方法
// 一、replace()第一个参数可写正则
console.log(str.replace(/is/, "*")); // 可以 th* is a island
// 二、replaceAll()第一个参数不可写正则
console.log(str.replaceAll(/is/, "*")); // 报错
console.log(str.replaceAll("is", "*")); // 不报错 th* * a *land
var str = "this is a island";
console.log(str);
// /正则表达式/匹配模式
// 匹配模式g表示全局匹配 匹配所有符合正则表达式的内容
console.log(str.replace(/\bis/g, "*")); // \b在is的前面就匹配开头的is
console.log(str.replace(/is\b/g, "*")); // \b在is的后面就匹配结尾的is
console.log(str.replace(/\bis\b/g, "*"));// 被包住就匹配中间的
console.log(str.replace(/\Bis\b/g, "*"));// 匹配结尾的is,中间和开头不匹配
console.log(str.replace(/\bis\B/g, "*")); //匹配开头的is,中间和结尾不匹配
// .表示除换行符(\n)回车符(\r)外的其它单个字符
var reg = /^a.b$/;
console.log( reg.test("a.b") );
console.log( reg.test("aab") );
console.log( reg.test("a2b") );
console.log( reg.test("a@b") );
console.log( reg.test("a b") );
console.log( reg.test("a\nb") );
console.log( reg.test("a\rb") );
console.log( reg.test("a b") );
console.log( reg.test("a\fb") );
console.log( reg.test("a_b") );
console.log( reg.test("a-b") );
总结
以上就是今天要讲的内容,本文介绍了pandas正则的使用和一些方法,而一些网站也提供了大量能使我们快速便捷地处理正则的方法。还有vscode安装正则插件也可以快速帮我们构建正则,vscode应用商店中搜索"any-rule".
当然,在后续vue的项目中我们也会使用到正则为我们的登录功能创建验证密码那些
在线正则表达式测试: : http://tool.oschina.net/regex/
正则表达式速查表 : https://jquery.cuishifeng.cn/regexp.html