正则表达式
正则表达式在网络上有很多资料和工具,用的时候直接在网上搜即可
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()方法检测用户输入
网友评论