【常用正则大全】

简介: 【常用正则大全】

正则表达式相关知识点


转义字符


如果想要匹配特殊字符的话,就得使用元字符 \, 它是转义字符字符,让其后续的字符失去其本来的含义。

image.png


匹配多个字符的简便正则表达式

image.png


循环与重复

image.png

- {x}: x次
- {min, max}: 介于min次到max次之间
- {min, }: 至少min次
- {0, max}: 至多max次



字符串边界

image.png



回溯引用


所谓 回溯引用(backreference) 指的是模式的后面部分引用前面已经匹配到的子字符串。

回溯引用的语法 \1,\2,....,

  • \1:表示引用的第一个子表达式
  • \2:表示引用的第二个子表达式
  • \0:则表示整个表达式


例子:假设现在要在下面这个文本里匹配两个连续相同的单词?

I am am kaimo not not kaimo313


$1,$2...来引用要被替换的字符串。

"I am am kaimo not not kaimo313".replace(/\b(\w+)\s\1/g, 'xxx');
"I am am kaimo not not kaimo313".replace(/\b(\w+)\s\1/g, '$1');

7ca19a893a874759a78c65db2ee42cbc.png


不想子表达式被引用,可以使用非捕获正则 (?:regex) 这样就可以避免浪费内存。

"kaimo313".replace(/(kaimo)(?:313)/, '$1,$2')


b4f6b6828966441b9eff18c448b2c9a9.png


(负)前向查找

前向查找:凡是以 (?=regex) 包含的子表达式在匹配过程中都会用来限制前面的表达式的匹配。

负前向查找:语法 (?!regex)

"kaimo kaimo313".replace(/kaimo(?=313)/, 'xxx');
// 负前向查找
"kaimo kaimo313".replace(/kaimo(?!313)/, 'xxx');

6bf74d4a6ae44d989ddbe3a1e1024606.png


(负)后向查找

后向查找:后向查找(lookbehind)是通过指定一个子表达式,然后从符合这个子表达式的位置出发开始查找符合规则的字串。语法:(?<=regex)


负后向查找:语法:(?<!regex)

可以将字符串进行翻转,然后再使用前向查找,作完处理后再翻转回来。


"kaimo kaimo313kaimo kaimo".replace(/(?<=313)kaimo/, 'xxx');
"kaimo kaimo313kaimo kaimo".replace(/(?<!313)kaimo/, 'xxx');
"kaimo kaimo313kaimo kaimo".replace(/(?<!313)kaimo/g, 'xxx');


e4b6721910c94afe84fe7f3079542ee6.png


image.png


推荐 vscode 插件:any-rule

安装

vscode 应用商店中搜索 any-rule,安装即可。

b05a4af5f2e144a780fc25c10672e348.png



使用

方式1:

右键选择 🦕正则大全


d3b6572044a5d6847f34cf118d0b5661.gif



方式2:

在代码任意位置输入**@zz**



3814c67a1dfa8675a615ef95f19a105d.gif



图解正则

每次在 any-rule 中选择正则后会弹出提示, 可点击图解正则


0524c5fc2ce844219f7e32b2042b4337.png


点击后可以看到正则解析:https://regexper.com/

c7ae20240e874d5cbba3dece772242ca.png


也可以使用正则表达式可视化工具:https://jex.im/regulex/#!flags=&re= 查看正则图解

714f6b2e3ebd4b39af6e360eaa09ece7.png



any-rule 正则大全测试

我们可以打开:https://any86.github.io/any-rule/,我们可以查找到我们需要正则关键字,然后输入去验证。


6f09f50b2e60486f80f82bd71696f26d.png


any-rule 正则大全(已收录 83)

下面的正则大全来自:https://github.com/any86/any-rule


火车车次

/^[GCDZTSPKXLY1-9]\d{1,4}$/



手机机身码(IMEI)

/^\d{15,17}$/


必须带端口号的网址(或ip)

/^((ht|f)tps?:\/\/)?[\w-]+(\.[\w-]+)+:\d{1,5}\/?$/


网址(URL)

/^(((ht|f)tps?):\/\/)?([^!@#$%^&*?.\s-]([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?\.)+[a-z]{2,6}\/?/


统一社会信用代码

/^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/



统一社会信用代码(宽松匹配)(15位/18位/20位数字/字母)

/^(([0-9A-Za-z]{15})|([0-9A-Za-z]{18})|([0-9A-Za-z]{20}))$/


迅雷链接

/^thunderx?:\/\/[a-zA-Z\d]+=$/


ed2k链接(宽松匹配)

/^ed2k:\/\/\|file\|.+\|\/$/


磁力链接(宽松匹配)

/^magnet:\?xt=urn:btih:[0-9a-fA-F]{40,}.*$/


子网掩码(不包含 0.0.0.0)

/^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(255|254|252|248|240|224|192|128|0)$/

linux"隐藏文件"路径

/^\/(?:[^/]+\/)*\.[^/]*/


linux文件夹路径

/^\/(?:[^/]+\/)*$/


linux文件路径

/^\/(?:[^/]+\/)*[^/]+$/


window文件夹路径

/^[a-zA-Z]:\\(?:\w+\\?)*$/


window下文件路径

/^[a-zA-Z]:\\(?:\w+\\)*\w+\.\w+$/


股票代码(A股)

/^(s[hz]|S[HZ])(000[\d]{3}|002[\d]{3}|300[\d]{3}|600[\d]{3}|60[\d]{4})$/
目录
相关文章
|
26天前
|
JavaScript
10. 正则表达式匹配
10. 正则表达式匹配
25 0
|
10月前
|
机器学习/深度学习 Web App开发 JavaScript
正则Regester
正则Regester
76 0
正则Regester
|
7月前
常用正则
常用正则
37 1
|
10月前
|
网络协议 JavaScript 前端开发
正则表达式、常用的正则
正则表达式、常用的正则
113 1
|
11月前
|
算法 Java C++
正则表达式匹配
正则表达式匹配
|
数据采集 人工智能 Go
正则处理
正则处理
65 0
|
新能源 Java 区块链
【常用正则大全】2
【常用正则大全】2
173 0
【常用正则大全】2
|
XML 数据安全/隐私保护 数据格式
正则表达式 - 常用正则总结
正则表达式 - 常用正则总结
107 0

热门文章

最新文章