作为运维还不会正则表达式?赶快看这篇学习一下

发布时间:2025-11-24 点击:0
概述正则表达式是很多运维薄弱的一项技能。大家很多时候都会觉得正则表达式难记、难学、难用,但不可否认的是正则表达式是一项很重要的技能,所有今天将学习和使用正则表达式时的关键点整理如下,仅供参考。
2、regexr
3、regexpal
开始在 javascript 中,一个正则表达式以 / 开头和结尾,所以简单至 /hello regexp/ 就是一个正则表达式。
flags(标志符或修饰符)flags 写在结束的/之后,可以影响整个正则表达式的匹配行为。常见的 flags 有:
g:全局匹配(global);正则表达式默认只会返回第一个匹配结果,使用标志符g则可以返回所有匹配
i:忽略大小写(case-insensitive);在匹配时忽略英文字母的大小写
m:多行匹配(multiline);将开始和结束字符(^和$)视为在多行上工作,即分别匹配每一行(由 \n 或 \r 分割)的开始和结束,而不只是只匹配整个输入字符串的最开始和最末尾处
flags 可以组合使用,如:
character sets(字符集合)用于匹配字符集合中的任意一个字符,常见的字符集有:
[xyz]:匹配 x或y``z
[^xyz]:补集,匹配除 x y z的其他字符
[a-z]:匹配从 a 到 z 的任意字符
[^a-n]:补集,匹配除 a 到 n 的其他字符
[a-z]:匹配从 a 到 z 的任意字符
[0-9]:匹配从 0 到 9 的任意数字
比如匹配所有的字母和数字可以写成:/[a-za-z0-9]/ 或者 /[a-z0-9]/i。
quantifiers (量词)在实际使用中常需要匹配同一类型的字符多次,比如匹配 11 位的手机号,我们不可能将 [0-9] 写 11 遍,此时可以使用 quantifiers 来实现重复匹配。
{n}:匹配 n 次
{n,m}:匹配 n-m 次
{n,}:匹配 >=n 次
?:匹配 0 || 1 次
*:匹配 >=0 次,等价于 {0,}
+:匹配 >=1 次,等价于 {1,}
metacharacters(元字符)在正则表达式中有一些具有特殊含义的字母,被称为元字符,简言之,元字符就是描述字符的字符,它用于对字符表达式的内容、转换及各种操作信息进行描述。
常见的元字符有:
\d:匹配任意数字,等价于 [0-9]
\d:匹配任意非数字字符;\d 的补集
\w:匹配任意基本拉丁字母表中的字母和数字,以及下划线;等价于 [a-za-z0-9_]
\w:匹配任意非基本拉丁字母表中的字母和数字,以及下划线;\w 的补集
\s:匹配一个空白符,包括空格、制表符、换页符、换行符和其他 unicode 空格
\s:匹配一个非空白符;\s的补集
\b:匹配一个零宽单词边界,如一个字母与一个空格之间;例如,/\bno/ 匹配 at noon 中的 no,/ly\b/ 匹配 possibly yesterday. 中的 ly
\b:匹配一个零宽非单词边界,如两个字母之间或两个空格之间;例如,/\bon/ 匹配 at noon 中的 on,/ye\b/ 匹配 possibly yesterday.中的 ye
\t:匹配一个水平制表符(tab)
\n:匹配一个换行符(newline)
\r:匹配一个回车符(carriage return)
实例上面罗列出了这么多正则表达式的语法和规则,可以在一定程度上帮助我们分析和理解一段正则表达式的作用,但是如何将这些规则组合并创造出有特定作用的表达式还需要我们自己多加练习,下面举几个例子来说明运用这些规则。
1. 匹配手机号码我们先从比较简单的匹配手机号码开始。目前国内的手机号码是1(3/4/5/7/8)开头的 11 位数字,因此手机号码的正则可以分解为以下几部分:
以 1 开头:/^1/第 2 位为3、4、5、7、8中的一个:/[34578]/ 或 /(3|4|5|7|8)/剩余 3-11 位均为数字,并以数字结尾:/\d{9}$/
组合起来即为 /^1[34578]\d{9}$/ 或 /^1(3|4|5|7|8)\d{9}$/,因为使用捕获括号存在性能损失,所以推荐使用第一种写法。
2. 匹配电子邮件标准的电子邮件组成为@.,
每部分的格式标准为(进行了相应的简化,主要为展示如何书写正则):
yourname:任意英文字母(a-z/a-z)、数字(0-9)、下划线(_)、英文句点(.)、连字符(-),长度大于 0domain:任意英文字母(a-z/a-z)、数字(0-9)、连字符(-),长度大于 0extension:任意英文字母(a-z/a-z),长度 2-8optional-extension:.开头,后面跟任意英文字母(a-z/a-z),长度 2-8,可选
每部分的正则表达式为:
yourname:/[a-z\d._-]+/domain:/[a-z\d-]+/extension:/[a-z]{2,8}/optional-extension:/(\.[a-z]{2,8})?/组合起来形成最后的正则表达式:
/^([a-z\d._-]+)@([a-z\d-]+)\.([a-z]{2,8})(\.[a-z]{2,8})?$/;为了增加可读性可以将每部分用()包起来,并不要忘记起始和结束符 ^$。


电子商务新产品成功推广法则
香港云服务器助力外贸企业发展
怎样选择昆明网站建设公司?
网站开发具体步骤
SEO较初的意义与目的—北京网站建设公司
12年网站优化经验告诉你那些好用的工具
南充网站建设的基本步骤都有哪些
如何写出吸引人的标题进行营销-大连微信营销