正则表达式:
用于匹配规律规则的表达式,正则表达式最初是科学家对人类神经系统的工作原理的早期研究,现在在编程语言中有广泛的应用。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
正则表达式的作用:
- 灵活性、逻辑性和功能性非常的强
- 可以迅速地用极简单的方式达到字符串的复杂控制
- 对于刚接触的人来说,比较晦涩难懂
方括号
表达式 | 作用 |
---|---|
[abc] | 查找方括号之间的任何字符 |
[^abc] | 查找任何不在方括号之间的字符 |
[0-9] | 查找任何从0至9的数字 |
[a-z] | 查找任何从小写a到小写z的字符 |
[A-Z] | 查找任何从大写A到大写Z的字符 |
[A-z] | 查找任何从大写A到小写z的字符 |
正则表达式的修饰符:
修饰符 | 简介 |
---|---|
i | 忽略大小写 |
g | 全局匹配 |
m | 多行匹配 |
预定义字符集:
字符 | 作用 |
---|---|
.(点) | 查找单个字符,出了换行和行结束符 |
\w | 查找单词字符 |
\W | 查找非单词字符 |
\d | 查找数字 |
\d | 查找数字 |
\D | 查找非数字字符 |
\s | 查找空白字符 |
\S | 查找非空白字符 |
\b | 匹配单词边界 |
\B | 匹配非单词边界 |
\n | 查找换行符 |
\f | 查找换页符 |
\r | 查找回车符 |
\t | 查找制表符 |
量词
量词 | 作用 |
---|---|
n+ | 匹配任何包含至少一个n的字符串 ,多了不限制 |
n* | 匹配任何包含零个或多个n的字符串 (可有可无,多了不限制) |
n? | 匹配任何包含零个或一个n的字符串 (可有可无,最多一次) |
{n} | 必须出现n次 |
{n,} | 必须最少出现两次,多了不限制 |
{n,m} | 最少出现n次,最多出现m次 |
n$ | 匹配任何结尾为n的字符串 |
^n | 匹配任何开头为n的字符串(还有一种取非用法:[^xxx] 除了xxx以外的) |
?=n | 匹配任何其后紧接指定字符串n的字符串 |
?!n | 匹配任何其后没有紧接指定字符串n的字符串 |
正则表达式API的使用:
1.search的基本使用
// search基本使用
var str = "abcabcabc";
var n = str.search(/bc/i)
console.log(n); //1 返回的是第一次匹配到的下标
var str = "abcabcabc";
var n = str.search("bc") //会自动转换为正则处理
console.log(n); //1 返回的是第一次匹配到的下标
2.replace的基本使用
// replace基本使用
var str = "aaabbbaaabbaaab";
var n = str.replace(/aaab/i,"pppp") //ppppbbaaabbaaab
var n = str.replace(/aaab/ig,"pppp") //ppppbbppppbpppp
console.log(n);
var str = "aaabbbaaabbaaab";
var n = str.replace("aaab","pppp"); //ppppbbaaabbaaab
console.log(n);
3.test的基本使用
// test方法基本使用:返回值是bool值
// ^表示开始第一位就是要匹配的内容
var reg = /^abc/g;
console.log(reg.test("csabcdfd")) //false
var reg = /abc/g;
console.log(reg.test("csabcdfd")) //true
var reg = /^1[^0124]\d{9}$/g; //判断手机号码
console.log(reg.test("18800001111")) //true
4.match的基本使用
// match方法基本使用
// [ad]指匹配所有ad,单独的a或者d都可以
var str = "abcderfgahd";
var reg = str.match(/[ad]/g); //[a,d]都会被匹配出来
console.log(reg); //结果是a,d
// [^ab]指匹配所有不是ad的
var str = "abcderfgahd";
var reg = str.match(/[^ad]/g); //不是[a,d]都会被匹配出来
console.log(reg); //结果是a,d
常用的正则表达式:
常用的正则 | 作用 |
---|---|
Email地址 | ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ |
域名 | [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.? |
18位身份证号码 | ^((\d{18})|([0-9x]{18})|([0-9X]{18}))$ |
帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线) | ^[a-zA-Z][a-zA-Z0-9_]{4,15}$ |
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线) | ^[a-zA-Z]\w{5,17}$ |
日期格式 | ^\d{4}-\d{1,2}-\d{1,2} |
中文字符 | [\u4e00-\u9fa5] |
qq号 | [1-9][0-9]{4,} |
手机号码 | ^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$ |