正则表达式 – 在线工具汇总

  • 工具一:可视化理解正则
  • 工具二:在线测试正则
  • 工具三:Regexr

该工具主要帮助你理解你的正则表达式

  • 正则表达式工具-Regulex
  • 地址:https://jex.im/regulex/#!flags=&re=%5E(a%7Cb)*%3F%24
  • 正浮点数 为例子:^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+|0$, 你将可以非常直观的看到它的流程:

该工具主要用于在线测试你写的正则是否有效

  • 正则表达式工具-在线测试
  • 地址:https://c.runoob.com/front-end/854/

综合上述两者,不过速度有点慢

  • 正则表达式工具-Regulex
  • 地址:https://regexr.com/

正则表达式(regular expression [regExp])超详细讲解一篇顶十篇

一个正则表达式,就是用某种模式去匹配字符串的一个公式。许多语言都提供了对正则表达式的支持

1, 提取某段文字中的所有英语单词

2, 提取数字

3, 提取数字和英语单词

找出文本中的所有数字子串

验证电子邮件和手机号码格式

正则表达式技术是对字符串进行模式匹配的技术

  1. 根据groups[0] 和 groups[1] = 4的记录位置,从content开始截取子字符串返回就是[0, 4]包含0但是不包含索引为4的位置
  2. 关于groups数组的理解:比如匹配(//d//d)(//d//d),匹配四位数的数字,第一组的值即找到1998。group[1] = 19; group[2] = 98
  3. 如果正则表达式分组(),即分组,则匹配规则如下

group[0]:表示匹配到的子字符串

group[1]:表示匹配到的子字符串的第一组子串

group[2]:表示匹配到的子字符串的第二组子串

但是匹配到的子字符串不能越界

想要灵活的使用正则表达式,必须了解其中各种元字符(Metacharacter)的功能,从功能上大致分为

  1. 限定符
  2. 选择匹配符
  3. 分组组合和反向引用符
  4. 特殊字符
  5. 字符匹配符
  6. 定位符

\\\\:转义字符,表示一个 \\ ,

在其他语言中,\\表示一个反斜杠

例如:要匹配 . 的正则为 \”\\\\.\”, 而不是”.“ 。

[ ]:可接受的字符列表

eg:[efgh]:e, f, g, h 中的任意一个字符

[^]:不可接受的字符列表

eg:除a, b, c 之外的任意一个字符,包括数字和特殊符号

– :连字符

eg:A-Z:任意的单个大写字母

. :匹配除\\n以外的任何字符,如果要匹配 . 要用转义符

eg:a..b : 以a开头,b结尾,中间包括2个任意字符的长度为4的字符串,aaab,a67b,a%¥b

\\\\d : 匹配单个的数字字符,相当于[0-9]

eg:\\\\d{3}(\\\\d)? 包含3个或者4个数字的字符串,123,4567

\\\\D:匹配单个非数字字符串,相当于[\\^0-9]

eg:\\\\D(\\\\d)*, 以单个非数字字符开头,后接任意个数字字符串,a、A342、b45678

\\\\w:匹配单个数字,大小写字母字符,相当于[-9a-zA-Z]

eg:\\\\d{3}\\\\w{4}, 以3个数字字符开头的长度为7的数字字母字符串,234abcd、12345pe

\\\\W:匹配单个非数字,大小写字母字符,相当于[\\^0-9a-zA-Z]

eg:\\\\W+\\\\d{2}, 以至少1个非数字字母字符开头,2个数字字符结尾的字符串,#29、#@!10

\\\\s: 匹配任何空白字符,(空格,制表符等)

\\\\S: 相当于对s取反,匹配任何非空白字符

Java的正则表达式是区分字母大小写的,如何实现不区分大小写:

  1. (?i)abc 表示abc都不区分大小写
  2. a(?i)bc 表示bc都不区分大小写
  3. a((>i)b)c 表示b都不区分大小写
  4. Pattern pat = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE); 创建正则表达式对象的时候,加入CASE_INSENSITIVE(不敏感,不区分大小写)

| : 表示选择

用于指定其前面的字符和字符和组合项连续出现的次数

* : 指定字符重复0此或n此(与具体要求)

eg:(abc), 仅包含任意个abc的字符串,等效于\\w\\, abc、abcabcabc

+:指定字符重复次或者n次(至少1次)

eg:m+(abc)*, 以至少一个m开头,后接任意个abc的字符串,m、mabc、mabcabc

?:指定字符重复0次或者1次(最多一次)

eg:m+abc?, 以至少一个m开头,后接ab或者abc的字符串,mab、mabc、mmmab、mmabc

{n}:只能输入n个字符

eg:[abcd]{3}, 以abcd组成的任意长度为3的字符串,abc、dbc、acd

{n,}:指定至少n个匹配

eg:[abcd]{3,}, 由abcd中字母组成的任意长度不小于3(>=3)的字符串,aab、dbc、aaabdc

{n,m}:只当至少n个但不多于m个匹配

eg:[abcd]{3,5},由abcd中字母组成的任意长度不小于3,不大于5(5>=x>=3)的字符串,abc、abcd、badab、badca

^: 指定起始字符,^[0-9]+[a-z]*,以至少1个数字开头,后接任意个小写字母,123、6aa、555edf

$:指定结束字符,^[0-9]\\\\-[a-z]+$,以1个数字开头后接连字符”-“,并以至少一个小写字母结尾的字符串,1-a

\\\\b:匹配目标字符串的边界,han\\\\b,这里的字符串的边界指的是子串间有空格,或者是目标字符串的结束位置,hansunping、sphan、nnhan

\\B:匹配目标字符串的边界,han\\\\B,和\\b的含义相反,hanshunping,sphan,nnhan

  1. 常用分组

常用分组构造形式

(pattern):非命名捕获,捕获匹配的子字符串。编号为零的第一个捕获是由整个正则表达式模式匹配的文本,其他捕获结果则根据左括号的顺序从1开始自动编号。

(? <name> pattern):命名捕获,将匹配到的子字符串捕获到一个组名称或编号名称中。用于name的字符串不能包含任何标点符号,并且不能以数字开头。可以使用单引号替代尖括号,例如(?\’name\’)

(?:pattern):匹配pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。但这对于“or”字符(|)组合模式部件的情况很有用。例如:\’industr(?:y|ies)\’是比,\’indeustry|industries\’更经济的表达式

(?=pattern):它是一个非捕获匹配。例如,\’Windwos(?=95|98|NT|2000)\’ 的匹配 “Windows 2000” 中的 “Windows 3.1” 中的\”Windows\”

(?!patter):该表达式匹配不处于匹配pattern的字符串的起始点的搜索字符串。他是一个非捕获匹配。例如,\’Windwos(?=95|98|NT|2000)\’ 匹配“Windows 3.1” 中的\”Windows\”,但不匹配 “Windows 2000” 中的 “Windows“。

?:当此字符紧随任何其他限定符(*, +, ?, {n}, {n,}, {n,m})之后时,匹配模式是”非贪心的“。”非贪心的“模式匹配搜索到的,尽可能短的字符串,默认的”贪心“模式匹配搜索到的,尽可能长的字符串。例如在\”oooo\”, \”o+?\”只匹配单个\”o\”, 而“o+”匹配所有 “o”。

是一个非强制异常类,表示一个正则表达式模式中的语法错误

  1. 分组:用圆括号组成一个比较负责的匹配模式,那么一个圆括号的部分我们可以看作是一个子表达式或者一个分组
  2. 捕获:把正则表达式中子表达式/分组匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用,从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推,组0代表的是整个正则式
  3. 反向引用:圆括号内的内容被捕获后,可以在这个括号后被使用,从而写出一个比较实用的匹配模式,这个我们称之为反向引用,这种引用既是可以在正则表达式内部,也可以是在正则表达式外部,内部反向引用 \\\\ 分组号,外部反向引用 $ 分组号

结巴去重案例

RegExr.com:强大正则表达式在线构建、学习工具!

家好,很高兴又见面了,我是\”高级前端‬进阶‬\”,由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。

RegExr is a HTML/JS based tool for creating, testing, and learning about Regular Expressions.

RegExr.com 是一个用于学习、构建和测试正则表达式的在线工具,由 Grant Skinner 和 gskinner.com 的优秀人员创建的。

RegExr 的典型特征包括:

  • 正则表达式匹配结果会在用户输入时实时更新,从而及时反馈给用户
  • 支持 JavaScript 和 PHP/PCRE等多语言 RegEx
  • 滚动匹配或表达式以查看详细信息,给用户最好的体验
  • 保存并与他人共享表达式,利于多方协同操作
  • 在编辑器中使用 cmd-Z/Y 撤消和重做,防止工作丢失

目前 RegExr 在 Github 通过 GPL-3.0 协议开源,有超过 10k 的 star,1k 的 fork、是一个值得关注的前端开源项目。

  • 此版本的 RegExr 使用 GPL v3 许可协议,如果使用者有兴趣根据其他条款使用该源,可以随时与官方联系
  • RegExr 使用 Gulp 来管理构建过程,开发者需要安装 Node 和 Gulp,并通过 npm install 安装其他依赖项。运行 gulp (默认)将运行开发版本并设置测试服务器
  • 如果想向 RegExr.com反馈,可以发送 pull 请求,同时需要确保格式正确并遵循现有文件中指定的样式。

更多关于 RegExr 的用法和示例可以参考文末资料,本文不再过多展开。

https://github.com/gskinner/regexr?tab=readme-ov-file

RegExr: Regular Expressions Creation Online Tool

https://power2build.wordpress.com/2017/05/25/regex-part-2/

https://www.hongkiat.com/blog/regular-expression-tools-resources/

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。