正则表达式详解

正则表达式详解

1.正则自身的方法

reg.test(str),检测字符串str中是否包含reg规则,返回布尔值

let reg = /wang/;
let str = "wangsffdsddgwan";
console.log(reg.test(str))//结果返回true

reg.exec(str),返回包含匹配结果的数组,没有则返回null,如果正则有g(全局的意思)标志,那么继续调用reg.exec(str)时,紧接着上传的匹配位置往下匹配

let reg = /wan/g;
let str = "wangdfsssgsgwan";
console.log(reg.exec(str));//结果返回一个数组第一项为正则要查找的字符串,第二项为找到该字符串的第一个字符的位置,第三项为整个字符串

2.字符串中能使用正则的方法

str.match(reg),返回包含匹配结果的数组,和exec类似

let reg = /wan/;
let str = "wangfsffwgdswan";
console.log(str.match(reg));

str.replace(reg,str(function)),将匹配的内容用第二个参数的str或者函数返回值替换,返回替换得到的新字符串

let reg = /wan/;
let str = "wangwfsjfsfwan";
let str1 = "ds";
console.log(str.replace(reg.str1))//结果返回一个替换得到的新字符串

str.split(reg),按照正则规则切割

let reg = /_/;
let str = "wangsfh_sfsd_kfwan";
console.log(str.split(reg));//结果返回一个数组,里面有三个字符串,就是以_分割的三块

2.标志

可以在正则表达式后加上标志,标志分为三种:i(不区分大小写),g(全局匹配),m(换行匹配)

let reg = /afe/i;

3.转义

特殊配合

\s \S 空格 非空格

\d \D 数字 非数字

\w \W 字符(数字、字母、下划线) 非字符

\b \B 独立部分(起始位置,结束位置,以及除了\w外的部分) 非独立部分

特殊符号转义

比如要匹配/这个字符,不能直接写,需要转义,正则里面需要转义的特殊符号有:()[]{}/^$|?*+.

let reg = /\s\d\w\b\[\]/;

4.量词

{n}匹配n个

let str = "sfsaafsh24241gasdf424";
let reg = /\d{2}/
console.log(str.match(reg));//匹配两个数字,所有结果返回和exec一样,只是第一项为字符串"24"

{n,m}匹配n~m个,包含n也包含m

let str = "sfsgsh42342gssa223234";
let reg = /\d{2,6}/;
console.log(str.match(reg));//可以匹配2-6个连续的数字,所以结果为,"42342"

{n,}n~无穷大个,包含n

let str = "sfsfhflf52344sdsglgj969";
let reg = /\d{2,}/;
console.log(str.match(reg));//可以匹配2到无穷个连续数字,只要不连续,加上g全局之后,会分为若干的段,这个结果返回为52344

量词特殊写法

{1,}可由 + 代替/*1到无穷大/

{0,}可由 * 代替/*0到无穷大/

{0,1}可由 ? 代替/*0或者1,可有可无/

5.子项

定义正则时,可以用()将部分规则包裹起来,这样在使用match或者exec做匹配的时候,能在得到的结果里面拿到该部分匹配的内容。

“abcd34adf”.match(/d(\d+))/*返回一个已d开头,后面是数字的字符串/

会得到数组[“d34”,“34”]

6.字符集

范围

可以使用字符集来匹配某一个范围的字符,比如:

[3-9],匹配3-9之间的任一数字字符

[a-z],匹配a-z之间的任一字母字符

[\u4e00-\u9fa5],匹配任一汉字字符

或者

可以使用字符集来表示或者的需求,比如:

[abc],匹配a或者b或者c字符

[0-9A-Z],匹配数字或者大写字母字符

[^abc],匹配除了abc三个字符之外任一字符

大部分在外面有特殊意义的符号,在这里都没有特殊意义,不需要转义,比如:[(){}],匹配(或)或{或}字符。而-字符在字符集里有特殊意义,所有要在字符集里表示-符号需要转义

7.其他特殊字符

^和$

^和$分别表示匹配开始位置和匹配结束位置

.

.表示匹配任意字符,即使在字符集里面,也表示匹配任意字符

8.常用用户名、密码、邮箱正则表达式

用户名:

汉字、字母、数字一般6到12位

^[\u4e00-\u9fa5a-zA-Z0-9]{6,12}$

密码:

一般包含数字、大小写字母、特殊符号

至少1个大写字母

(?=.*?[A-Z])

至少1个小写字母

(?=.*?[a-z])

至少1为数字

(?=.*?[0-9])

至少有1个特殊字符

(?=.*?[!@#$%^&*-_+=])

至少8个字符,至少1个字母,1个数字和1个特殊字符

^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$

邮箱:

只允许英文字母、数字、下划线、英文句号、以及中划线组成

^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值