正则
处理字符串规则
作用
验证字符串
可以约束字符串的规则。验证字符串是否符合某种规则
正则.test(字符串) 返回布尔值
ini
var str = 'jkasdh13212312312fkjashdf'
var bool = reg.test(str)
console.log(bool);
字符串.search(正则) 返回下标或-1
从字符串中找符合规则部分,找到了就返回下标,找不到返回-1
ini
var str = 'jkasdh13212312312fkjashdf'
var index = str.search(reg)
console.log(index);
提取字符串
正则.exec(字符串) 返回数组
将符合规则部分,放在一个数组中
ini
var str = 'jkasdh13212312312fkjashdf'
var arr = reg.exec(str)
console.log(arr);
字符串.match(正则) 返回数组
将符合规则部分,放在一个数组中
ini
var str = 'jkasdh13212312312fkjashdf'
var arr = str.match(reg)
console.log(arr);
替换字符串
可以将字符串中满足规则部分替换成新的部分
字符串.replace(正则, 新内容)
将字符串中符合规则的部分替换成新内容,返回替换后的新字符串
ini
var str = 'jkasdh13212312312fkjashdf'
console.log( str.replace(reg, '*'.repeat(11)) );
定义
字面量定义方法
var reg = /规则/
javascript
var reg = /abc/
console.log(reg);
console.log(typeof reg);
console.dir(reg)
构造函数方式
var reg = new RegExp('规则')
javascript
var reg = new RegExp('abc')
console.log(reg);
组成部分
字符
普通字符
普通字符串中的字符
javascript
var reg = /abc/ // 表示我们的规则:带有字符a
var str = 'asdfasfdabc'
console.log( reg.test(str) );
元字符
特殊字符
\d
代表一个任意数字
javascript
var reg = /\d/ // 意思:包含1个数字
var str = 'a0123456asdfasdfbcd'
console.log( reg.test(str) );
\w
代表一个 任意 数字、字母、下划线
javascript
var reg = /\w/ // 意思:包含1个 任意的数字或字母或下划线
var str = '!@asdfkjlkjahsdf$%^'
console.log(reg.test(str));
\s
代表一个空格
ini
var reg = /\s/
var str = 'aasjdfhakjsdhfka'
console.log(reg.test(str));
.
代表一个任意字符
ini
var reg = /./
var str = '@'
console.log( reg.test(str) );
\D
非\d的意思,代表一个非数字
\W
非\w的意思,代表一个非数字字母下划线
\S
非\s的意思,代表一个非空格
修饰符
修饰次数
+
代表前面的字符需要最少1次
javascript
var reg = /\d+/ // 意思:最少1个数字
var str = 'abc123def'
console.log( str.match(reg) );
?
代表前面的字符最多1次
javascript
var reg = /\d?/ // 字符串中是否包含 最多1个数字,没有数字也可以
var str = 'asdjkfhk'
console.log( reg.test(str) );
*
代表前面的字符可以是任意次
javascript
var reg = /\d*/ // 意思:字符串中是否包含 任意个数字
var str = 'abc123def'
console.log( str.match(reg) );
{n}
代表前面的字符必须是n次
javascript
var reg = /\d{2}/ // 意思:字符串中是否包含了 连续的两个数字 等同于 /\d\d/
var str = 'asjdfhk69789jas'
console.log( reg.test(str) );
{n,}
代表前面的字符最少是n次
javascript
var reg = /\d{2,}/ // 意思:包含了最少2个数字
var str = 'asjdfhk6jas'
console.log( str.match(reg) );
{n,m}
代表前面的字符最少是n次,最多是m次
javascript
var reg = /\d{2,5}/ // 意思:包含了最少2个数字,最多5次
var str = 'asjdfhk62333999jas'
console.log( str.match(reg) );
修饰开头结尾
开头的修饰符 ^
修饰字符串必须以他后面的字符开头 - 通常这个符号放在具体规则的最前面
javascript
var reg = /^\d+/ // 字符串必须以\d开头
var str = 'bbb123abc'
console.log( reg.test(str) );
^ 放在[]中就表示取反的意思
javascript
var reg = /[^ab]/ // 非a和b
var str = 'ab4'
console.log(reg.exec(str));
结尾修饰符 $
修饰字符串必须以他前面的字符结尾 - 通常这个符号放在具体规则的末尾
javascript
var reg = /\d$/ // 字符串必须以\d结尾
var str = 'abc234d5'
console.log( reg.test(str) );
其他
[] 是其中的任意一个
修饰其中的字符,整个中括号代表一个字符,是其中的任意一个
javascript
var reg = /[abc]/ // 一个字符,a或b或c
var str = 'ddwerd'
console.log( reg.test(str) );
| 在正则表示或者的意思
javascript
var reg = /a|b|c/ // 等同于[abc]
var str = 'ddwecrd'
console.log( reg.test(str) );
() 这是一个单元(整体)
javascript
var reg = /ab|cd/ // ab | c ab | cd a b|c d a b|cd 有歧义
// 所以加括号来表示
var reg = /\d(ab|cd)/ // ab或cd
var reg = /(ab|c)d/ // ab或c abd或者cd
var reg = /a(b|c)d/ // b或c abd或acd
var reg = /a(b|cd)/ // b或cd ab或acd
i 放在两个斜杠后面
css
var reg = /a/i // 字符串是否包含a或A
var str = 'A'
console.log( str.match(reg) );
g 开启贪婪模式
javascript
var str = 'i love html very much and html is very good'
//将其中的html替换成js
var reg = /html/
var reg = /html/g
console.log( str.replace(reg, 'js') );
- 到
\ 转义
[\u4e00-\u9fa5] 任意一个汉字
放在特殊符号去前面
网易邮箱的规则
规则:字母开头,数字字母下划线组成,6~18位
ini
var reg = /^[a-zA-Z]\w{5,17}@(163|126).com$/
var str = 'zhaotianyin1@163.com'
console.log( reg.test(str) );
qq号规则
规则:不能用0开头,5~10位任意数字
javascript
var reg = /^[1-9]\d{4,9}$/
var reg = /^[1-9]\d{4,9}@qq.com$/
手机号正则
规则:1开头,第二个数字3-9,其余9个数字是任意的
javascript
var reg = /^1[3-9]\d{9}$/
提取字符串中所有的中文姓名
ini
var str = "张三:1000,李四:50000,王五:800。";
var reg = /[\u4e00-\u9fa5]{2,}/g
console.log( str.match(reg) );