正则表达式基本使用

1 基本概念

正则表达式中的元素由字符元字符组成。字符又叫做普通字符即普通的计算机编码,如我们常用的英文字符、数字、中文等等;元字符又被称为特殊字符即在正则表达式中存在特殊意义的字符,如\*$等等,详情可见MDN 文档。本文主要介绍正则表达式的基本使用,以及一些常见正则问题的处理。

2 一对一匹配

正则表达式与目标字符一对一匹配。

当我们想匹配a字符,正则表达式可以直接写成/a/
p1
但是匹配的是元字符时,如$,直接写成/$/是无法匹配成功的,因为$在正则中存在特殊意义。
p2
此时我们需要使用\对元字符进行转义,即消除元字符的特殊意义。
p3
个别普通字符在\的修饰下也会拥有特殊含义,如\n(换行)、\r(回车)等等。

小结:匹配普通字符:/普通字符/;匹配元字符:/\元字符/

正则表达式 描述&举例 关联
/普通字符/ 匹配普通字符 -
/\元字符/ 匹配元字符 -
/\n/ 匹配换行符(LF) 换行和回车
/\r/ 匹配回车符(CR) 换行和回车
/\f/ 匹配换页符 -
/\t/ 匹配制表符(Tab) -
/\v/ 匹配垂直制表符 -

3 一对多匹配

正则表达式之所以强大,就是其能进行模糊匹配。使用集合区间通配符的方式实现一对多的匹配,实现字符模糊。涉及:[]-通配符

3.1 集合

使用[]或者[^]将字符一一列举,[]:代表匹配列举的内容;[^]:代表匹配除列举以外的内容。

假如想匹配 1 到 9 之间的任意一个奇数,[一对一匹配](#2 一对一匹配)肯定无法满足当前的要求。此时我们可以使用集合的方式来处理。

p4

p5

3.2 区间

需要匹配的字符连贯时,可以使用一个-区间来代替一一列举

当需要匹配任意大于 4 的数字时,我们可以直接写成/[56789]/,但是更简单的方法是写成/[5-9]/

  • /[a-z]/:匹配任意小写字母;
  • /[\u4e00-\u9fa5]/:匹配任意汉字;

p6

3.3 通配符

通配符用于匹配一类字符。

在开发中时常会遇到仅允许用户输入数字的场景,用区间方式可写成/[0-9]/,如果用通配符写法可以写成:\d。懒惰才是人类文明进步的真正动力呀;

p8

集合、区间和通配符可以合并使用的,当他们同时存在时会取它们的并集。

p10

小结:集合写法:/[列举字符]/;区间写法:/[开始-结束]/;通配符写法:/通配符/

正则表达式 描述&举例 关联
/[13579]/ []列举的全部字符 -
/[5-9]/ []内区间的全部字符 -
/\d/ 匹配全部数字 等价于[0-9]
/\D/ 匹配除数字以外的任意字符 等价于 [^\d]
/\w/ 0 至 9、a 至 z、A 至 Z 以及_ 等价于 [a-zA-Z_\d]
/\W/ 0 至 9、a 至 z、A 至 Z 以及_以外字符 等价于 [^\w]
/\s/ 全部空白字符,如:
空字符、\n、\r、\f、\t、\v
等价于[\n\r\f\t\v ]
/\S/ 全部非空白字符 等价于[^\s]
/./ 除\n 和\r 以外的全部字符 等价于[^\n\r]

4 次数限定

本节就来讲讲设置字符重复的次数,实现长度模糊。涉及:?{}*+

4.1 ?元字符

使用?修饰的字符或者分组可匹配 0 次或者 1 次。如正则:/https?/,可以同时匹配httphttps

p11

p12

4.2 {}元字符

如果想同时匹配httphttpshttpss三种字符串,按照前面说的?元字符可以写成/https?s?/,但是这样的写法显然很冗长,这时我们就可以用到{}元字符了,正则可写成/https{0,2}/{n,m}修饰的字符或者分组可匹配n-m次;{}有四种写法:

  • {count}:精确count 次;

  • {min,max}:min 次到 max 次;

  • {min,}:至少 min 次;

  • {0,max}:至多 max 次。

p13

4.3 *元字符

使用

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript正则表达式和Java正则表达式在语法上有一些差异,但是它们的基本概念和用法是相似的。下面是将JavaScript正则表达式转换为Java正则表达式的一些常见规则: 1. 语法差异: - JavaScript正则表达式使用斜杠(/)作为定界符,而Java正则表达式使用双引号(")作为定界符。 - JavaScript正则表达式中的特殊字符需要进行转义,而Java正则表达式中的特殊字符不需要转义。 2. 字符类: - JavaScript正则表达式中的字符类使用方括号([])表示,而Java正则表达式使用方括号([])或者Unicode转义(\p{...})表示。 - JavaScript正则表达式中的字符类可以使用连字符(-)表示范围,而Java正则表达式中需要使用Unicode转义(\uXXXX)表示范围。 3. 量词: - JavaScript正则表达式中的量词使用花括号({})表示,而Java正则表达式使用花括号({})或者问号(?)表示。 - JavaScript正则表达式中的贪婪量词默认是贪婪模式,而Java正则表达式中的贪婪量词需要在后面添加问号(?)来表示非贪婪模式。 4. 边界匹配: - JavaScript正则表达式中的边界匹配使用插入符号(^)和美元符号($)表示,而Java正则表达式使用\A和\Z表示。 5. 其他差异: - JavaScript正则表达式中的捕获组使用圆括号(())表示,而Java正则表达式使用圆括号(())或者方括号([])表示。 - JavaScript正则表达式中的反向引用使用反斜杠加数字(\1、\2等)表示,而Java正则表达式使用美元符号加数字($1、$2等)表示。 以上是一些常见的JavaScript正则表达式转换为Java正则表达式的规则。具体转换时,还需要根据具体的正则表达式进行适当的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值