正则表达式的学习
一 .正则表达式:也叫规则表达式,按照一定的规则组成的一个表达式,这个表达式的作用主要是匹配字符串
二 .正则表达式的作用:匹配字符串的
常用于:
1.验证表达数据: 邮箱验证,邮政编码,手机号,身份证号等
2.数据过滤:mysql注入,抓数据
三 .正则表达式的组成:是由元字符或限定符组成的一个式子。
四 .正则表达式的声明:
1)标准声明:
var Reg= new RegExp(/规则字符串/);
2)简单的:
var Reg= /规则字符串 匹配模式/ ;
五 .语法规则:
<1>:元字符
1. . (点)表示的是:除了\n以外的任意的一个字符
2. [] 表示的是:范围
例如:[0-9] 0到9 任意的一个数字 “789” 也可以用[0-9]表示
注意:[100-200]的表达式是错误的,应该这样表示:[1][0-9][0-9]
[a-z] 表示的是:所有的小写的字母中的任意一个
[A-Z] 表示的是:所有的大写的字母中的任意一个
[a-zA-Z] 表示的是:所有的字母中的任意一个
[0-9a-zA-Z] 表示的是:所有的数字或者是字母中的任意一个
[] 另一个含义:把正则表达是中元字符的意义干掉 [.] 意味者就是一个 .(点)
3. * 表示的是: 前面的表达式出现了0次到多次(是前面紧挨着的表达式)
例如:[a-z][0-9]* 表示:小写字母中的任意一个,后面有0个或者多个数字
4. + 表示的是: 前面的表达式出现了一次到多次 (是前面紧挨着的表达式)
例如: [a-z][9]+ 表示是:任意一个小写字母后面最少有一个9,或者多个9
5. ? 表示的是: 前面的表达式出现了0次到1次,最少是0次,最多是1次(是紧挨着的表达式)
<2>限定符
限定符: 限定前面的表达式出现的次数
* 1, {}更加的明确前面的表达式出现的次数
* {0,} 表示的是:前面的表达式出现了0次到多次,和 *一样的
* {1,} 表示的是:前面的表达式出现了1次到多次,和 + 一样的
* {0,1} 表示的是:前面的表达式出现了0次到1次,和 ?一样的
* {4} 前面的表达式出现4次
* 综上所诉:
* {n,} 表示的是前面的表达式出现了n次到多次
* ❤❤❤❤❤❤❤但是注意❤❤❤❤❤❤❤❤❤❤❤❤❤❤:
* {,10} 错误的---------------》不能这么写
*
* 2, ^ 表示的是:以什么开始,或者是取非(取反)
* 例如 ^[0-9] 表示的是: 以数字开头
* ^[a-z] 表示的是: 以小写字母开头
* [^0-9] 表示的是: 取反,非数字
* [^a-z] 表示的是: 取反,非小写字母
* [^0-9a-zA-Z_] 表示的是: 取反,特殊符号(注意:下划线不算是特殊符号)
* 总结; 把符号^ 放在[]外面就是 以什么开头的意思,放在括号里面就是 取反的意思
*
* 3, $ 表示的是以什么结束
* 例如: [0-9][a-z]$ 表示的是 必须以小写字母结束
*
* ^[0-9][a-z]$ 相当于严格模式 与"4f"匹配
* [0-9][a-z] 与"099874fkl"匹配
*
*
* \d 表示的是: 数字中的任意一个
* \D 表示的是: 非数字中的一个(字母或特殊符号)
* \s 表示的是: 空白符中的一个
* \S 表示的是: 非空白符
* \w 表示的是: 非特殊符号(匹配一个单字字符(字母,数字,或者下划线) 等价于[A-Za-z0-9])
* \W 表示的是:特殊符号
* \b 表示的是:单词的边界
* 例如:"what is it"
六 .正则表达式常用的方法:
1. .test(字符串) 在字符串中测试是否含有正则表达式,不管是要整个字符串还是单个字符,只要匹配,就返回true,否则false。
2. .match()
字符串.match(/正则表达式/)
查找出所有字符串中含有正则表达式的第一个子串
查找出所有字符串中含有正则表达式的所有子串 (后面带一个g)---- 字符串.match(/正则表达式/g)
3. .search()
字符串.search(/正则/)
返回 字符与正则表达式匹配第一个字符串的位置,如果没有,就返回-1
4. split()
字符串.split(/正则/)
字符串按照正则表达式所指代的字符串进行分解
注意:/ /这代表空格
5. replace()
字符串.replace(/正则/,“新的串”)
查找出字符串中与正则表达式相匹配的子串,用新子串,替换掉。
6. exec()
正则表达式.exec(str)
字符串查询与正则表达式相匹配的子串,每一次只能查找一个子串,返回的是只有一个子串的数组
正则表达式要用g全局模式匹配