正则表达式

正则表达式是什么:
  • 复杂的字符串搜寻、替换工作,无法用简单的方式(类似借助标准库函数)达成。
  • 能够帮助你进行各种字符串验证。
  • 不止应用于编程语言中:JavaScript、JAVA、Perl、PHP、C#…
  • 也应用于许多操作系统的主流指令中:Linux/Unix、Mac、Windows PowerScript
    在我们常用的开发工具中,如Fiddler Willow、WebStorm、Vim,正则表达式也能帮助我们方便的进行Find&Replace的工作。
创建方式

在JavaScript中,我们可以通过RegExp()构造函数或者RegExp直接量两种方式去创建正则表达式。

var reg1= /s$/;
var reg2= new RegExp('s$');

上面代码中的reg1和reg2是等价的,都是用来匹配所有以字母s结尾的字符串。

直接量字符

\o:NUL字符
\t: 制表符(\u0009)
\n: 换行符(\u000A)
\v:垂直制表符(\u000B)
\f: 换页符(\u000C)
\r: 回车符(\u000D)
\xnn: 由十六进制数nn指定的拉丁字符
\uxxx:由十六进制数xxxx指定的Unicode字符
\cX: 控制字符^X

字符类

[]: 方括号内任意字符
[^]:不在方括号内的任意字符
. :除换行符和Unicode行终止符外的任意字符
\w:任何字符组成的单词,等价于[a-zA-Z0-9_]
\W:任何不是ASCⅡ字符组成的单词,等价于[^a-zA-Z0-9_]
\s:任何Unicode空白符
\S:任何非Unicode空白符,注意\w和\S的不同
\d:任何数字,等价于[0-9]
\D: 除了数字之外的任何字符,等价于[^0-9]
[\b]:退格直接量

重复字符类

{n,m}:匹配前一项至少n次,但不能超过m次
{n,}:匹配前一项n次或多次
{n}: 匹配前一项n次
?:匹配前一项0次或1次,也就是说前一项是可选的,等价于{0,1}
+: 匹配前一项1次或多次,等价于{1,}
*: 匹配前一项0次或多次,等价于{0,}

锚字符

^: 匹配字符串的开头,在多行检索中,匹配一行的开头

$:匹配字符串的结尾,在多行检索中,匹配一行的结尾

\b:匹配一个单词的边界,简而言之,就是位于字符\w和字符\W之间的位置,或位于字符\w和字符串的开头或结尾之间的位置(但需要注意的是在字符组内[\b]匹配的是退格符)

\B:匹配非单词边界的位置

(?=p):零宽正向先行断言,要求接下来的字符都与p匹配,但不能包括匹配p的那些字符

(?!p):零宽负向先行断言,要求接下来的字符不与p匹配

修饰符

i: 执行不区分大小写的匹配

g: 执行一个全局匹配,简而言之,即找到所有的匹配,而不是在找到第一个之后就停止
m:多行匹配模式,^匹配一行的开头和字符串的开头,$匹配行的结束和字符串的结束

小案例

题目:用正则表达式做邮箱验证

<script>
		var str = prompt("请输入邮箱地址:");
		var reg = /\w+@[0-9a-zA-Z]{2,}(\.[a-zA-Z0-9]{2,3}){1,2}/;
		if(!reg.test(str)){
				alert("邮箱格式为:xxx..@xxx.xxx");
			}else {
				alert("你的邮箱为:" + str);
			}
	</script>

效果如图:
成功
在这里插入图片描述

失败
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值