RegExp - 正则表达式(Regular Expression)
作用:
- 验证字符串是否符合规则
- 从字符串里面获取一部分符合规则的内容
语法:
1. 字面量创建
var reg = /****/;
区别:(1) 不能进行字符串拼接
(2) 书写基础元字符直接写 \x
2. 内置构造函数创建
var reg = new RegExp("****");
区别:(1) 可以进行字符串拼接
(2) 书写基础元字符需要写 \\x
方法:
一. test( ) 验证字符串是否符合正则,返回一个boolean值
语法:正则.test(字符串)
二. exec( ) 从字符串获取符合正则规则的那部分片段, 只捕获第一个片段(返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。)
注意:如果正则是全局模式(标志g),在连续调用test或exec方法时,应注意lastIndex属性的值。
www.w3school.com.cn/jsref/jsref…
标识符
标识符是写在正则表达式外面,用来修饰整个正则表达式的
- i 忽略大小写
- g 全局
- y 粘性全局: (不同于g)第一次捕获必须是从 [0]开始,第二次捕获必须是从第一次结束的位置
语法:
一. /abcd/igy
二. new RegExp('abcd', 'igy')
元字符
一. 基础元字符
- \s 表示一个空格
- \S 表示一个非空格
- \t 表示一个制表符('tab键')
- \d 表示一个数字
- \D 表示一个非数字
- \w 表示一个"数字,或字母,或下划线"
- \W 表示一个非"数字,或字母,或下划线"
- 点 . 表示一个非换行符( 除了\n外的任意字符 )
- 斜线 \ 表示转义符:把没有意义的内容转义成有意义的内容;把有意义的内容转义成没有意义的内容
注:字符串里的 / 也表示转义. - \u 匹配中文,后面带上中文的四位 unicode编码
如:[\u4e00-\u9fa5] 表示任意一个中文字符
二. 边界元字符
- ^ 表示字符串开始
- $ 表示字符串结尾
三. 限定元字符
用法:写在普通元字符或字母符号的后面,用于修饰前面一个符号的出现次数.
- * 表示出现 0 - 多次
- + 表示出现 1- 多次
- ? 表示出现 0 -1 次
- {n} 表示出现 n 次
- {n,} 表示出现 n - 多次
- {n, m} 表示出现 n - m 次
正则的贪婪性:
贪婪:当正则使用限定符,并且用exec()方法去捕获的时候,默认会尽可能多的去捕获内容.
非贪婪:尽可能少的去捕获内容 ;用法:限定符后面加一个? (常用于抓html结构等...)
四. 特殊字符
1. ( )
1-1. 表示一个整体
1-2. 单独捕获
捕获字符串的时候,从左边开始每一个小括号依次是数组里面[1]开始的内容。
2. (?: ) 只表示一个整体,但不单独捕获
3. | 占位或, 表示左边或者右边都行
注意:常与( )连用,因为"占位或"分开的左边和右边是一个整体
4. [ ] 占一个字符的位置,表示里面任意一个都行
5. [^] 占一个字符的位置,表示非里面的的任意一个都行
6. - 表示至 或 到,用在[ ]字符里面,表示从一个字符到另一个字符(ASCII码是连着的),如[0-9], [a-z]
组合形式:
[0-9a-zA-Z_] 等价于 \w
[^0-9a-zA-Z_] 等价于 \W
[0-9] 等价于 \d
[^0-9] 等价于 \D
[ ] 等价于 \s
[^ ] 等价于 \S
特殊说明:当点 .出现在[ ]或者[^]里面的时候,仅表示一个点. 文本,而不是一个非换行字符
五. 预查
- (?=) 正向肯定预查
- (?!) 正向否定预查
- (?<=) 负向肯定预查
- (?<!) 负向否定预查
六. 重复出现
/num
num是一个正整数,表示正则第num个可被捕获的( ), 这个可被捕获的( )里是什么,会出现一份一模一样的内容.
与字符串合作方法:
1. search( ) 查找第一个相匹配的子字符串的索引,如没有则返回-1.
语法:字符串.search(字符串片段);字符串.search(正则表达式)
2. replace( ) 在字符串中用一些字符替换另一些字符,返回替换后的新字符串。
语法:字符串.replace(字符串片段,要替换的内容);字符串.replace(正则表达式,要替换的内容)
3. match( ) 在字符串内检索指定的值,返回匹配结果的数组(数组的内容依赖于RegExp 是否具有全局标志 g)。如没有则返回null
语法:字符串.match(字符串片段);字符串.match(正则表达式)
参考链接:www.bilibili.com/video/BV1Ca…
练习
一个邮箱的组成规则是:一串数字、英文、下划线/@/一串英文、数字/./一串英文
xxxx@xxx.com
一串数字、英文、下划线:\w+
@:@
一串英文、数字:[a-z0-9]+
.:\.
一串英文:[a-z]+
reg_email = /^\w+@[a-z0-9]+\.[a-z]+$/i;