一、概述
正则表达式是对字符串操作的一种逻辑公示,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
二、正则表达式的用途
正则表达式有三个主要用途:
模式验证:检测某个字符串是否符合规则,例如检测手机号、身份证号等等是否符合规范
匹配读取:将目标字符串中满足规则的部分读取出来,例如将整段文本中的邮箱地址读取出来。
匹配替换:将目标字符串中满足标准的部分替换为其他字符串,例如将整段文本中的“hello”替换成“haha”。
三、正则表达式的语法
3.1 创建正则表达式对象
对象形式:var reg = new RegExp("正则表达式") 当正则表达式中有"/"时使用这种形式。
直接量形式:var reg = /正则表达式/ 一般使用这种声明方式
3.3 正则表达式的匹配模式
3.3.1 全文查找
如果不使用g对正则表达式对象进行修饰,则使用正则表达式进行查找时,仅返回第一个匹配;使用g后,返回所有匹配。
.3.2 忽略大小写
3.3.3 模糊匹配和精确匹配
3.3.4 多行查找
不使用多行查找模式,目标字符串中不管有没有换行符都会被当做一行。
3.4 元字符
在正则表达式中被赋予特殊含义的字符,不能被直接当做普通字符使用。如果要匹配元字符本身,需要对元字符进行转义,转义的方式是在元字符前面加上“\”。
3.4.1 常用的元字符
代码 说明
. 匹配除换行字符以外的任意字符。
\w 匹配字母或数字或下划线等价于[a-zA-Z0-9_]
\W 匹配任何非单词字符。等价于[^a-zA-Z0-9_]
\s 匹配任意的空白符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v]
\S 匹配任何非空白字符。等价于[^\f\n\r\t\v]
\d 匹配数字。等价于[0-9]
\D 匹配一个非数字字符。等价于[^0-9]
\b 匹配单词的开始或结束
^ 匹配字符串的开始,但在[]中使用表示取反
$ 匹配字符串的结束
3.5 字符集合
语法格式 | 示例 | 说明 |
[字符列表] | [abc] | 目标字符串中任何一个字符出现在字符列表中就算匹配成功。 |
[^字符列表] | [^abc] | 匹配字符列表中未包含的任意字符。 |
[字符范围] | [a-z] | 匹配指定范围内的任意字符。 |
.6 出现次数
代码 | 说明 |
* | 出现零次或多次 |
+ | 出现一次或多次 |
? | 出现零次或一次 |
{n} | 出现n次 |
{n,} | 出现n次或多次 |
{n,m} | 出现n到m次 |
3.7 在正则表达式中表达“或”
使用符号:“|”
3.8 常用正则表达式
常见的正则校验规则
- 校验手机号码(中国大陆)const regex = /^1[3456789]\d{9}$/;
2. 校验邮箱地址const regex = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
3. 校验身份证号码(中国大陆 )
const regex =
/^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}[0-9Xx]$/;
// 身份证号码为15位或18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
// const regex = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
4. 校验密码强度const regex = /^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]{6,20})$/;
5. 校验 URL 地址const regex = /^(http|https):\/\/([\w-]+\.)+[\w-]+(:\d+)?(\/\S*)?$/;
6. 校验邮政编码(中国大陆)const regex = /^[1-9]\d{5}$/;
7. 校验 IP 地址(ipv4)const regex =
/^([01]?\d{1,2}|2[0-4]\d|25[0-5])\.([01]?\d{1,2}|2[0-4]\d|25[0-5])\.([01]?\d{1,2}|2[0-4]\d|25[0-5])\.([01]?\d{1,2}|2[0-4]\d|25[0-5])$/;
8. 校验护照号码(中国大陆)const regex = /^[EeGg]\d{8}$/;
9. 校验港澳通行证号码const regex = /^[HMhm]\d{8}$/;
4,示例。
bugku 变量1
1.打开环境,审计代码,里面说用get传参的方式,而且后面所接内容只可以用任意字母,数字,下划线,以及汉字字符。
2.使用GLOBALS得到全部变量
原文链接:https://blog.csdn.net/HunterArley/article/details/128146718