一、正则表达式
正则表达式(Regular Expression),也称为正规表示法,是一种用于描述字符模式的工具。它在文本处理和匹配(表单验证)、搜索(字符串中提取我们想要的部分)、替换(过滤敏感词)等操作中非常常见。
正则表达式由字符和特殊字符组成,可以用来匹配字符串中的某个模式或者进行字符串的查找和替换。下面是一些常见的正则表达式特殊字符和它们的含义:
- .:匹配任意单个字符,除了换行符(\n)。
- *:匹配前面的字符零次或多次。
- +:匹配前面的字符一次或多次。
- ?:匹配前面的字符零次或一次。
- ^:匹配字符串的开头位置。
- $:匹配字符串的结尾位置。
- \b:匹配单词的边界。
- \B:匹配非单词的边界。
- \d:匹配数字字符,相当于 [0-9]。
- \w:匹配单词字符,包括字母、数字和下划线,相当于 [a-zA-Z0-9_]。
- \s:匹配空白字符,包括空格、制表符、换行符等。
- \D:匹配非数字字符,相当于 [^0-9]。
- \W:匹配非单词字符,相当于 [^a-zA-Z0-9_]。
- \S:匹配非空白字符。
以上只是一小部分正则表达式中的特殊字符,使用正则表达式时还可以利用这些特殊字符的组合、量词、边界等功能来构建更复杂的匹配模式。
在 JavaScript 中,可以使用 RegExp
对象或者字面量形式来创建正则表达式。例如,/pattern/
是一个正则表达式字面量,用于匹配符合特定模式的字符串。
定义正则表达式的语法:
const 变量名=/表达式/ 其中/ /为正则表达式字面量
const reg=/前端/
判断是否有符合规则的字符串:
test()方法 用来查看正则表达式与指定字符串是否匹配
语法:
regObj.test(被检测的字符串)
如果正则表达式与指定的字符串匹配,返回true,否则false.
元字符-边界符
- ^:匹配字符串的开头位置。
- $:匹配字符串的结尾位置。
如果^和$在一起,表示必须是精确匹配。
元字符-量词
设定某个模式出现的次数
- *:匹配前面的字符零次或多次。
- +:匹配前面的字符一次或多次。
- ?:匹配前面的字符零次或一次。
- {n}:匹配前面的字符恰好 n 次。
- {n,}:匹配前面的字符至少 n 次。
- {n,m}:匹配前面的字符至少 n 次且至多 m 次。(逗号左右两侧没有空格)
元字符-字符类
元字符字符类用于匹配特定类型的字符,提供了一种简洁的方式来描述字符集合。常见的元字符字符类包括:
- [abc]:匹配包含在方括号内的任何一个字符(a、b 或 c)。
- [^abc]:匹配除了方括号内列出的字符之外的任何字符。
- [a-z]:匹配任何小写字母。
- [A-Z]:匹配任何大写字母。
- [0-9]:匹配任何数字字符。
- [a-zA-Z0-9]:匹配任何字母或数字字符。
- [\s]:匹配任何空白字符,包括空格、制表符等。
- [\d]:匹配任何数字字符,相当于 [0-9]。
- [\w]:匹配任何单词字符,包括字母、数字和下划线。
console.log(/[abc]$/.test('ab'))// false,只能匹配abc中的一个
二、白名单
白名单(White list)是一种访问控制机制,用于限制系统或应用程序中的某些操作或资源只能被预先定义的一组允许访问的实体使用。它是一种安全策略,通过明确列出被允许的项,拒绝所有其他项的访问。
在计算机领域,白名单通常用于验证、过滤或授权访问请求。例如,在网络安全中,可以配置白名单来允许特定 IP 地址或网络范围的设备访问受保护的系统或资源。同样,在防火墙设置中,可以创建白名单以允许特定端口或协议通过,而阻止其他非授权的连接。
在应用程序开发中,白名单也常用于过滤用户输入和数据验证。例如,一个表单验证功能可能会检查用户提交的数据是否在白名单中,只有符合白名单中的规定的数据才会被接受和处理。
总而言之,白名单是一种用于限制访问或接受指定项的简单而有效的控制机制,可以帮助提高系统的安全性和可靠性。
三、正则表达式 exec
方法
exec
方法是 JavaScript 中正则表达式对象(RegExp 对象)的一部分。它用于在字符串中执行一个搜索匹配,并返回一个结果数组或 null
。
使用 exec
方法
假设我们有一个字符串和一个正则表达式:
var regex = /uk_(.+)/; var upgrade_filename = "uk_examplefile.rar";
执行 exec
方法
var match = regex.exec(upgrade_filename);
exec
方法的返回值
- 如果找到匹配,
exec
返回一个数组。- 数组的第一个元素是整个与正则表达式匹配的部分。
- 数组的后续元素是捕获组(如果存在)的匹配内容。
- 数组还包含两个额外的属性:
index
,表示匹配开始的位置;input
,表示被匹配的原始字符串。
例如
var regex = /uk_(.+)/;
var upgrade_filename = "uk_examplefile.rar";
var match = regex.exec(upgrade_filename);
console.log(match);
match
将会是:
[
"uk_examplefile.rar", // 整个匹配到的字符串
"examplefile.rar", // 捕获组 (.+) 匹配到的内容
index: 0, // 匹配开始的位置
input: "uk_examplefile.rar" // 输入的字符串
]
获取捕获组内容
你可以通过访问数组的特定索引来获取捕获组的内容:
var capturedContent = match[1]; // 这里是 "examplefile.rar"