正则表达式(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]$/
// 验证身份证