【正则】
1.什么是正则
正则表达式(规则表达式) regular expression
正则其实就是描述了一套规则,本质是操作字符串。
2.正则是干什么的? 操作字符串的
(1)模式匹配 (表单验证)
(2)文本检索
(3)替换
3.正则的好处(为什么用它)
简单,方便
性能极高
4.字符串方法都有哪些
substring(开始位置,[结束位置])
substr(开始位置,个数)
slice(开始位置,[结束位置])
charAt(下标)
indexOf()
lastIndexOf()
split() ---转数组
toLowerCase()
toUpperCase()
replace(把谁,替换成谁)
trim() 去除收尾空格
5. 正则怎么使用
(1) var reg=new RegExp('规则','选项'); 通过构造函数创建(好处:可以放变量)
(2) var reg=/规则/选项 通过字面量创建 (不可以放变量)
6. 字符串方法中使用正则的
(1) str.search(正则); 搜索符合正则条件的字符串的下标 返回的是数字 没有找到返回-1
类似indexOf 通过正则找下标
(2) str.match(正则) 挑,选出符合正则条件的字符串 返回的是数组 没有返回null
(3.1) str.replace(正则,替换成谁) 把符合正则条件的字符串替换成某个字符串
(3.2) str.replace(正则,function(s){
s //是符合正则条件的字符串
})
7. 选项(模式):
g global 全局
i ignore 不区分大小写
m mutil-line 多行
选项不区分顺序
8. 转译字符(元字符)
\d 数字 [0-9]
\s 空格
\w 单词 [a-zA-Z0-9_]
\D 非数字 [^0-9]
\S 非空格
\W 非单词 [^a-zA-Z0-9_]
.代表所有,任意字符
\. 代表的是 .
\\ 代表\
\\\\ \\
.\ / ? + 都要前面加 \ 转译
如:http//
转后:http\/\/
9. 量词
{n} 正好n个 \d{3}--->\d\d\d
{n,m} 最少n个最多m个
{n,} 最少n个 多了不限
{,n} 错× 字符串的个数不能出现负数
{1,} + 若干个 最少1个多了不限
{0,1} ? 可以没有,最多一个
{0,} * 可以没有 多了不限
10.1 [ ]
有或的用法
/[abc]/ /a|b|c/
/a[bc]/ /ab|ac/
/a[bc]d/ /abd|acd/
/[a|b]/ a b |
10.2 范围的用法
/[a-z]/ abcde....z
/[0-9]/ \d
/[1-38]/ 1 2 3 8
10.3. 排除
/[^0-9]/ 表示排除0-9
总结: [ ]
1、[]里面的东西都是或的形式
2、[]里面和放范围
3、[^] 不代表行首,代表除去里面的范围
4、其他特殊符号代表本身
11. 修饰符
| 代表或
^ 行首 注:如果^单独使用,代表字符串行首,配合m使用会识别段落
$ 行尾
12 ( )
1.分组()
a+ aaaaa
ab+ abbbbb
(ab)+ abababab
2 .匹配子级
配合replace使用 str.replace(reg,function(s,a,b){
s是 整体
a是第一个括号的项
b是第二个括号的项
})
3.优选级
4. 重复的子项
如:abbb /(a)(b)\2+/ 表示第二项重复
aaaab /(a)\1+(b)/ 表示第一项重复
13. 正则的校验
强校验
弱校验
14.正则有校验的方法
(1) 正则.test(字符串) 返回 true false
test() 一般配合^ &
功能:用于检测是否于正则匹配。
返回:布尔值,true匹配,false不匹配
语法:reg.test(检测的内容)
(2)正则.exec(字符串)
功能:用于检测是否于正则匹配。
返回:数组, 不匹配返回null
语法:reg.test(检测的内容)
15. 例子:
1. QQ号校验 5-12
/[1-9]\d{4,11}/
2. 座机号 : 区号-座机号 如:010或1012 0289
区号 (0[1-9]\d{1,2}-)?
座机号 [1-9]\d{6,7}
/^(0[1-9]\d{1,2}-)?[1-9]\d{6,7}$/
3. 手机号
/1[3-57-9]\d{9}/
4. 中文校验
[\u4e00-\u9fa5]
一 龥
\u表示字符编码 4e00 和 9fa5 是十六进制编码