正则表达式
正则表达式在网络上有很多资料和工具,用的时候直接在网上搜即可
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 |
{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
**分组
分组成$1,$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"
零宽断言
IOS,MAC不支持零宽断言
正则零宽断言,一共4种
1、(?=xxx) 例:\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分
2、(?<=xxx) 例:(?<=\bre)\w+\b会匹配以re开头的单词的后半部分
3、(?!xxx) 例:\d{3}(?!\d)匹配三位数字,而且这三位数字的后面不能是数字
4、(?<!xxx) 例:(?<![a-z])\d{7}匹配前面不是小写字母的七位数字
————————————————
版权声明:本文为CSDN博主「孙三苗」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010377516/article/details/122327460
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()方法检测用户输入