【5分钟深入了解学习正则表达式】(附正则相关网址)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

正则表达式是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本


提示:以下是本篇文章正文内容,下面案例可供参考

一、js中的正则表达式是做什么用的?

正则表达式(regular expression,简称RegExp),描述字符串的对象,表达文本模式的方法
有强大的’模式匹配’和’文本检索与替换’功能


二、正则表达式特点

  1. 灵活性、逻辑性、功能性强
  2. 可迅速用极简方式操作复杂字符串

三、正则表达式的创建

方式1:字面量方式

效率高 编译直接新建正则

语法: var 变量名 = /正则表达式/[匹配模式];
实例: var reg = /a/;

方式2:RegExp构造函数

不推荐 构造运行时新建正则

语法: var 变量名 = new RegExp("正则表达式" [, "匹配模式"]);
实例:var reg = new RegExp("a");

检索指定字符串是否匹配
语法: RegExp.prototype.test(匹配的字符串) 
作用:执行检索,返回 truefalse
实例: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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值