正则表达式
1.什么是正则表达式?
(1)是描述字符串组成语法结构的语法规则
(2)用于匹配字符串中字符组合的模式
(3)是一个对象
2.特点:
(1)非常灵活
(2)逻辑性非常强
(3)以非常简单的方式对字符串进行复杂的控制
3.创建正则表达式
(1)使用字面量 / /
var 变量名 = /表达式/
(2)使用RegExp构造函数
var 变量名 = RegExp(/表达式/)
var 变量名 = new RegExp(/表达式/)
4.正则表达式的使用
(1)test()方法:返回boolean值。true表示符合正则规则,false表示不符合正则规则
正则对象.test(被验证的字符串)
(2)模式修饰符:/表达式/[switch]
switch:是模式修饰字符,是可选的,通过它可以对正则进一步的设置
g:表示全局匹配
i:忽略大小写
(3)边界符:
^:表示匹配行首的文本(表示以谁开头)
$:表示匹配行尾的文本(表示以谁结尾)
(4)预定义字符
(1) . :匹配除了'\n'的单个字符
(2) \d :表示0~9之间的任意数字。等价于[0-9]\
(3) \D :表示匹配0~9以外的字符。等价于[^0-9]
(4) \w :表示匹配任意字母,数字,下划线。等价于[a-zA0-9]
(5) \W :表示除字母,数字,下划线。等价于[^a-zA0-9]
(6) \b :单词分界符
(7) \s :匹配空格(包括换行符,制表符,空格符等),相当于[\t\r\n\v\f]
match(正则表达式)方法:是String对象的方法,用来截取符合正则表达式规则的子串
强调:转义字符: '\',若要输出反斜杠,要使用连续两个'\'-->'\\'
(5)字符范围示例
1. [cat]:匹配字符集合中的任意一个字符c,a,t ,包含任意一个则返回值为true,反之为false
2. [^cat]:匹配除c,a,t以外的字符
3. [A-Z]:匹配字母A-Z范围的字符
4. [\u4e00-\u9fa5]:匹配任意一个中文字符
5. var reg = /^[a-zA-Z0-9_-]$/:如果允许用户输入英文字母(不区分大小写),数字,短横线-,下划线_的正则情况
(6)量词符和括号符:
1.量词符:
(1) ? :匹配?之前的字符零次或一次 。hi?t -->ht hit
注意:exec(字符串),是正则表达式对象的方法。返回值类型是数组
(2) + :匹配+前面的字符一次或多次。
bre+ad --> bre...ad
(3) * :匹配*前面的字符零次或多次。
bre*ad-->
(4){n}:匹配{}之前的字符n次.
hi{3}t-->hiiit
(5){n.}:匹配{}前的字符最少n次.
hi{3}t-->hiii...t
(6){n,m}:匹配大括号前面的字符n-m次
2.括号字符:改变限定符的范围
(1)改变限定符范围之前:cat|er
匹配结果: cat,er
(2)改变限定符范围之后:
ca(t|er)
匹配结果:cat,caer
(3)分组:
分组前:abc{2}-->表示{}前面的c要出现两次
分组后:a(bc){2}-->表示{}前面的bc要出现两次
正则表达式的捕获与非捕获
1.捕获:使用小括号可以进行分组,当小括号后面有量词符时,就表示对整个组进行操作
2.进行字符串的替换:replace结合正则表达式实现、
3.贪婪匹配:表示匹配尽可能多的字符。是正则表达式的默认匹配方式
4.懒惰匹配:表示匹配尽可能少的字符。通过'?'来实现
正则表达式的优先级:
一级: \ 转义字符
二级: (),[]
三级:*,+,?,{n},{n,m}
四级:^,$,\任意元字符,任意字符
结合性 -5*6 --> (-5)*6
身份证的正则和表单的验证