正则表达式
正则表达式在网络上有很多资料和工具,用的时候直接在网上搜即可
1. 声明和使用
1.1 通过构造函数定义
var 变量名= new RegExp(/表达式/);
1.2 通过直接量定义(简单方便,我们一般用这个)
var 变量名= /表达式/;
1.3 常用方法,可用于检测传入的字符串是否符合该规则并返回布尔值
exp.test("要检测的字符串")
2. 修饰符
| 修饰符 |
描述 |
| g |
执行全局匹配(查找所有匹配而非在找到第一个匹配后停止) |
| i |
执行对大小写不敏感的匹配 |
| m |
执行多行匹配 |
3. 字符类
| 元字符 |
描述 |
| . |
查找单个字符,除了换行和行结束符 |
| \w |
查找单词字符 |
| \W |
查找非单词字符 |
| \d |
查找数字 |
| \D |
查找非数字字符 |
| \s |
查找空白字符 |
| \S |
查找非空白字符 |
| \b |
匹配单词边界 |
| \B |
匹配非单词边界 |
| \0 |
查找 NULL 字符 |
| \n |
查找换行符 |
| \f |
查找换页符 |
| \r |
查找回车符 |
| \t |
查找制表符 |
| \v |
查找垂直制表符 |
| \xxx |
查找以八进制数 xxx 规定的字符 |
4. 边界 量词 括号
4.1. 边界
| 边界 |
描述 |
^ ^只有在[]内才表示非 在外边表示开始
|
会匹配行或者字符串的起始位置 ^只有在[]内才表示非 在外边表示开始
|
| $ |
匹配一个字符串的结尾,比如 (b$) 就是匹配以字母b结尾的字符串 |
| ^$ |
^$在一起 表示必须是这个(精确匹配) |
4.2. 量词
| 量词 |
描述 |
| "*" |
重复零次或更多 x>=0 |
| "+" |
重复一次或更多次 x>=1 |
| "?" |
重复零次或一次 x=(0 |
|
1) |
| {n} |
n次 |
| {n,} |
重复n次或更多 x>=n |
| {n,m} |
重复出现的次数比n多但比m少 n<=x<=m |
4.3. 括号
4.3.1. 方括号
| 方括号 |
描述 |
| 简单类[abc] |
查找方括号之间的任何字符 |
| 负向类[^abc] |
查找任何不在方括号之间的字符 |
| 范围类[a-z]或[0-9] |
表示该位置可以出现的字符的范围 |
| 组合类[a-zA-Z0-9] |
范围类的组合 |
4.3.2. () [] {} 的区别
| 括号 |
描述 |
| () |
表达式中有几个()就会得到几个相应的匹配字符串。比如 (\s+) 表示连续空格的字符串 |
| [] |
定义匹配的字符范围 比如 [a-zA-Z0-9] 表示字符文本要匹配英文字符和数字 |
| {} |
表示匹配的长度 比如 \d{3} 表示匹配三个数字,\d{1,3} 表示匹配1~3个数字,\d{3,} 表示匹配3个以上数字 |
| 或运算符
'qabcpqcbap'.replace(/q(abc|cba)p/g, 'X') XX
**分组
分组成
2,$3...**
'2019-04-28'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2/$3/$1') "04/28/2019"
忽略分组 在()内加上 ?:即可
'2019-04-28'.replace(/(\d{4})-(?:\d{2})-(\d{2})/g,'$2/$1') "28/2019"
5. 常见项目的匹配
常见项目的匹配网上有很多(例如搜索常用正则表达式大全),无需记忆,能看懂即可
- 匹配国内电话号码:
/^0\d{2,3}-\d{7,8}$/
- 匹配姓名:
/^[\u4e00-\u9fa5]{2,}$/
- 匹配腾讯QQ号:
/^[1-9]\d{4,10}$/
- 匹配手机号:
/^1[3456789]\d{9}$/
- 匹配邮箱:
/^\w+([+-.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
6. RegExp 对象方法
| 方法 |
描述 |
| exec |
检索字符串中指定的值。返回找到的值,并确定其位置 |
| test |
检索字符串中指定的值。返回 true 或 false |
| toString |
返回正则表达式的字符串 |
7. 支持正则表达式的 String 对象的方法
| 方法 |
描述 |
| search |
检索与正则表达式相匹配的值 |
| match |
找到一个或多个正则表达式的匹配 |
| replace |
替换与正则表达式匹配的子串 |
| split |
把字符串分割为字符串数组 |
8. 封装自己的trim方法
封装自己的trim()方法
function trim(str) {
return str.replace(/^\s+/,"").replace(/\s+$/,"");
}
function trim(str) {
return str.replace(/^\s+|\s+$/,"");
}
使用trim()方法检测用户输入
网友评论