正则表达式(Regular Expression)是一种文本模式,包含普通字符(a-z, A-Z, 1-9,)和特殊字符(.-等)。是制定一套规则,匹配出一个符合规则字符串。
用处:
- 验证输入的字符串
- 识别文本中的特定文本,对其进行操作
- 提取匹配成功的字符串
创建一个正则:
new RegExp('o','gi');
var reg = /o|你好|/d+/gi
选项:
| 选项 | 解释 |
|---|---|
| g | 全局 |
| i | 忽略大小写 |
| m | 段落多行匹配 |
修饰符:
| 修饰 | 解释 |
|---|---|
| ^ | 行首 |
| $ | 行尾 |
| 丨 | 或 |
| [] | 字符范围 |
| /a[bc]d/ | /abd丨acd/ |
| [0-9] | 匹配所有的数字, '-'代表范围 |
| [1-38] | 1丨2丨3丨8 |
| [0-9.-] | 匹配所有的数字,句号和减号 |
| [a-zA-Z] | 匹配所有的小写字母和大写字母 |
| [^0] | 排除中括号里面的东西 |
| [^0-9] | 排除数字 |
| [^a-zA-Z] | 排除字母 |
转译:
| 转译 | 解释 |
|---|---|
| \ | 消除空格, 一个斜杠是转译的意思 |
| \\ | 代表特殊字符斜杠\ |
| . | 任意 |
| \. | 代表点. |
| \\ | 代表特殊字符斜杠 |
| \d | 数字 [0-9] |
| \w | 代表 [0-9 a-z A-Z _] |
| \s | 空格 |
| \r | 回车 |
| \D | 非数字 [^0-9] |
| \W | 非单词 [^0-9 a-z A-Z _] |
| \S | 非空格 |
| \n | 换行 |
量词:
| 转译 | 解释 |
|---|---|
| + | 若干个,例: var reg = /\d+/g |
| * | 可以没有, 有了不限 |
| ? | 可以没有, 有最多一个 |
| {} | 个数范围 |
| /\d{n}/ | n个数字 |
| {n,m} | 最少n个数字, 最多m个 |
| {n,} | 最少n个, 无上限 |
| {0,} | 可以没有, 可以无上限 |
| {0,1} | 可以没有, 有只能一个 |
注: 量词只跟前一个元素
分组:
| 转译 | 解释 |
|---|---|
| () | 括号中的为一组 |
字符串方法:
查询符合正则的字符串:
str.sarch(reg) // reg为定下的正则
返回值: 如果找到返回下标, 没有找到返回-1
挑选符合正则的内容:
str.match(reg)
替换符合正则条件的字符串:
str.match(/\d/g,function(s){ // s为符合正则条件的字符串,形参
return 'red' // 替换成的内容
})
注: 返回的是替换后的新字符串, 源字符串没有发生改变
校验:
reg.test(str)
注:只要字符串其中一部分满足条件就成立, 所以在校验的时候必须加首尾修饰符^$
返回值: 满足为true或不满足为false
表达式例子:
var reg = /^(0[1-9]\d{1,2}-)?[1-9]\d{6,7}$/ // 验证座机号
var reg = /^1\d{10}$/ // 验证手机号
var reg = /^\w+@[a-z0-9-]+(\.[a-z]{2,8}){1,2}$/ // 验证邮箱
var reg = /^[1-9]/d{4,10}$/ // 验证QQ号
var reg = /^1[89]|[2-9]\d|100$/ // 验证年龄, 是否18岁以上
var reg = /^[\u4e00-\u9fa5]{2,6}$/ // 验证汉子姓名
var reg = /^[1-9]\d{5}[1-9]\d{3}(0[1-9])|(1[0-2])(0[1-9])|([12][0-9])|(3[01])\d{3}[0-9X]$/
// 验证身份证