你对一件事如果不同意,可以转过头去不理,也可以诚恳的提出批评,但不要冷拆热讽,因为冷嘲热讽会损害自己的灵魂,慢慢使你变为一个满目阴私的人
1. 元字符
1.1 元字符及功能介绍
元字符 | 功能 |
---|
\d | 匹配一个数字 |
\D | 匹配一个非数字字符 |
\w | 匹配一个单字字符(字母、数字、下划线) |
\W | 匹配一个非单字字符 |
\s | 匹配一个空白字符,包括空格,制表符和换行符 |
. | 匹配一个任意字符 |
^ | 匹配开头 |
$ | 匹配结尾 |
1.2 元字符注意事项
- 如果使用new RegExp()创建,反斜杠需要多写一个
- 比如
/^1\d{10}$/ 和 new RegExp('^1\\d{10}$')
2. 字符的转义
- 在特殊字符之前加上反斜杠\表示下一个字符不是特殊字符,应当按照字面意思理解使用
如
/^[a-zA-Z]{2,}\.[a-zA-Z]{2,}$/
- 不管一个符号是否有特殊意义,都可以在之前加上反斜杠 \ 来确保它不具有特殊意义,只表示符号本身。
3. 方括号表示法
- 使用方括号,比如[abc],可以创建一个字符集,表示匹配方括号里面的任意字符
- 比如某学校的学号规定,一共7为,第一位是b则为本科,y为研究生,后面为6为数字,则可表示为
/^[by]\d{6}$/
- 可以使用 - 来指定一个字符范围,^ 表示否定
元字符 | 等价方括号表示 |
---|
\d | [0-9] |
\D | [^0-9] |
\w | [a-zA-Z0-9_] |
\W | []^a-zA-Z0-9_ |
4. 量词
量词 | 意义 |
---|
* | 匹配前一个表达式0次或者多次,等价于{0,} |
+ | 匹配前一个表达式一个或者多次等价于{1,} |
? | 匹配前一个表达式0次或者1次,等价于{0,1} |
{n} | n是一个正整数,匹配前一个字符正好出现了n次 |
{n,} | n是一个正整数,匹配前一个字符至少出现了n次 |
{n,m} | 匹配前一个字符至少出现了n次,至多出现m次 |
5. 修饰符
- 修饰符也叫标志(flags),用于使用正则表达式实现高级搜索。
修饰符 | 意义 |
---|
i | 不区分大小写搜索 |
g | 全局搜索,即搜索时会记录上次搜索到达的位置 |
var re = /m/gi
var re = new RegExp('m','gi')
6. 正则表达式可以‘打点’使用哪些方法呢?
方法 | 意义 |
---|
test() | 测试某字符串是否匹配正则表达式,结果返回布尔类型 |
exec() | 根据正则表达式,在字符串中进行查找,根据查询号结果返回数组或者null |
- test()方法的功能是:检测某个字符串是否与正则表达式匹配,若匹配返回true,不匹配返回false
var reg = /^[1-9][0-9]{4,10}$/
console.log(reg.test(29978467027))
console.log(reg.test(123))

- exec()方法功能是:在一个指定字符串中执行一个正则匹配查找,返回结果是一个数组或者null。如:
var str = 'abc123def456ght789'
console.log(/\d+/.exec(str))

- exec()的逐条遍历:exec()最有趣的是,有‘g’修饰的正则表达式会变为一个有状态的,这意味着就可以对单字符串中的结果进行多次逐条遍历,如:
var str = 'abc123def456ght789'
var reg = /\d+/g
let res = null
while(res = reg.exec(str)){
console.log(res)
}

7. 字符串的相关方法
方法 | 简介 |
---|
search() | 在字符串中根据正则表达式进行匹配查询,返回首次匹配索引到的位置,索引不到则返回-1。该方法与indexOf()类似,但indexOf()不支持正则 |
match() | 在字符串中根据正则表达式进行匹配查询,返回一个数组,索引不到返回null |
replace() | 替换字符串中匹配的值,可以使用正则表达式,返回替换后的字符串 |
split() | 分割字符串为数组,可以使用正则表达式,返回分割后的数组 |
如:
var str = 'abc123def456ght789'
var str1 = 'acs'
var reg = /\d+/g
console.log(str.search(reg));
console.log(str1.search(reg));
console.log(str.match(reg));
console.log(str1.match(reg));
console.log(str.replace(reg,'*'));
console.log(str.split(reg));

8. 实际应用
- 用正则表达式进行表达验证
- 实际上,很多正则不需要我们自己写,可以通过搜素引擎查找,即拿即用。