正则--要什么写什么
例如:从一个字符串里找到a
let str = 'asfaf1232'
let re = /a/
str.search(re)
正则主要是学习转义、元字符、量词、选项
元字符 []
[]代表一个范围,这个范围只占一个位置
有三大种:
- 任选一个
- [abac123]
- 在这个位置上,可以是a、b、c、1、2、3
- 只能是一个
- 例如:/a[abc]c/
- 可以匹配:aac、abc、acc
- 范围
- [0-9]
- [a-z]
- [0-9a-z]
- 排除
- [^345] 除了3、4、5之外的都可以
- [^0-9] 排除数字
- [^a-z] 排除所有字母
- [^0-9a-z] 排除所有数字字母
【简单实例】:识别是否是QQ号
// 分析
// 5~11位数字
// 第一位1-9
// qq号
let str = "5123123"
let re = /^[1-9]\d{4,10}$/
// 测试正则是否正确
re.test(str) // true
选项
- g
- 全家搜索所有
- i
- 忽略大小写
转义
- \d
- 代表所有数字
- [0-9]
量词
指代位置范围
量词放在后面
()在正则里,意思是分组
- {n}
- 确切的某个值
- a{5} aaaaa
- (ab){5} ababababab
- {n,m}
- 某个范围
- a{3,8} 3-8个a
- {n,}
- 最少n个,最多无限
- a{4,} 最少4个a
- {,m}
- 最少0个,最多m个
- a{,4} 最少0个a,最多4个
正则方法
- str.search(re)
- 搜索正则匹配到的结果第一次出现的位置
- 找到,返回数字1,没找到,返回-1
- str.match(re)
- 返回一个数组
- 一般会加g,不然只会返回匹配到的第一个
- re.test(str)
- 返回一个布尔值
- 有个小毛病,就是会找字符串中有没有要求的那一部分,有就返回true
- 如果是要验证整个字符串是否符合要求,一般会加上^ $