轻松了解JavaScript--正则表达式

正则表达式的创建

1.字面量创建

var   自定义名称 = /正则表达式/修饰符

例如:var reg=/hello/g

2.构造函数创建

var 自定义名称=new RegExp(''正则表达式'',"修饰符")

例如:var reg=new RegExp(''hello'',''g'')

字符分类

1.普通字符

字母、数字、下划线、汉字、没有特殊含义的符号(,;!@等)

2.特殊字符

\:将特殊字符转义成普通字符

3.模式修饰符

i:ignoreCase,匹配时忽视大小写

m:multiline,多行匹配

g:global,全局匹配

注意:字面量创建正则时,模式修饰符写在一对反斜线后

正则表达式实例方法

1.exec

可用来匹配字符串中符合正则表达式的字符串

如果匹配到,返回值是一个result数组:

[匹配的内容,index: 在str中匹配的起始位置,input: 参数字符串,groups: undefined]

否则返回null

2.test

用来测试待检测的字符串中是否有可以匹配到正则表达式的字符串,如果有返回true,否则返回false

正则表达式的规则

1.字符集合

[abc]   查找方括号之间的任何字符

var reg1 = /[abc]/;// 包含有a 或者 包含有b 或者包含有c

[0-9]   0到9区间的任何整数 “ -” 连字符,表示一个范围内的字符

[a-zA-Z] a到z A到Z之间的任意一个字符

var reg1 = /[0-9]/

 [^asd]   除asd之外的字符  ^表示除了xxxx之外的字符

^[a]$   “^”写在中括号外面表示以什么开头 “$”表示以什么结尾

当“^”与“$”一起使用时表示必须是精准匹配

var reg = /^abc$/
//表示必须以adc开头并以abc结束  只有abc符合匹配规则,abcabc是不符合的

2.字符类

"." 除换行符\n和回车符之外的任何单个字符

\d 匹配一个数字字符,等效于[0-9]

\D 等效于[^0-9] 相当于\d的取反

\w 匹配包括下划线的任何单个字符,包括A~Z,a~z,0~9和下划线"_",等效于 [a-zA-Z0-9_]

\W 相当于 \w的取反

\s 匹配任何Unicode空白字符,包括空格、制表符、换页符等,等效于[\f\t\n\r]

\S 相当于\s的取反  等价于[^\f\t\n\r]

3.数量词

X* 表示X出现的次数为 0多次。等价于{0,}

X+ 表示X出现的次数为 1多次。等价于 {1,}

X? 表示X出现的次数为 01 。等价于{0,1}

X{n} n为非负整数。前面的 x 重复出现 n 次

X{n,} n为非负整数。前面 x 重复出现至少 n 次,及>=n次

X{n,m} n和m为非负整数。前面的x 重复出现至少 n 次,至多 m 次

重复方式

贪婪模式

尽可能多的匹配(首先取最多可匹配的数量为一组进行匹配),当匹配剩余的字符串,还会继续尝试新的匹配,直到匹配不到为止,为默认模式

非贪婪模式

尽可能少的匹配(每次取最少匹配的数量为一组进行匹配),直到匹配不到为止

使用方法:在量词后加上

选择,分组,引用

选择

字符"|"用于分隔供选择的字符,选择项的尝试匹配次序是从左到右,直到发现了匹配项,如果左边的选择项匹配,就忽略右边的匹配项,即使它可以产生更好的匹配

分组

/(briup){3}/    这里有圆括号包裹的一个小整体成为分组

等价于/briupbriupbriup/

候选

一个分组中,可以有多个候选表达式,用 | 分隔:

例如:var reg = /I Like (basketball|football|table tennis)/

捕获

例如:var reg = /(\d{4})-(\d{2})-(\d{2})/

        var date = '2021-08-29'

        reg.test(date)

        console.log(RegExp.$1)//输出分组1   //2021

        console.log(RegExp.$2)//输出分组2   //08

注意:$1引用了第一个被捕获的串,$2是第二个,依次类推

嵌套分组的捕获

规则是以左括号出现的顺序进行捕获

var reg = /((apple) is (a (fruit)))/
var str = "apple is a fruit"
reg.test(str) // true
RegExp.$1 // apple is a fruit
RegExp.$2 // apple
RegExp.$3 // a fruit
RegExp.$4 // fruit

引用

正则表达式里也能进行引用,这称为反向引用

例如:var reg = /(\w{3}) is \1/

\1引用了第一个被分组所捕获的串,换言之,表达式是动态决定的。

注意,如果编号越界了,则会被当成普通的表达式

实例:

// 1.手机号验证 1开头 3 4 5 7 8 
var reg=/^1[34578]\d{9}$/;
console.log(reg.test('13804804496'));
// 2.密码验证 包含大小写/数字/!@#%& >=6
// 1.(?=.*[A-Z] )(?=.*[a-z])(?=.*\d)(?=.*[!@#%&])
// 2.^[a-zA-Z\d!@#%&]{6,}$
var reg=/(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[!@#%&])^[a-zA-Z\d!@#%&]{6,}$/;
console.log(reg.test('Aa@1232'));

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值