正则表达式

正则表达式

一 . 定义

正则表达式(regular expression)是一个字符串,用来描述匹配一个字符串集合的模式。

二.元字符

代码

匹配说明

.

匹配除换行符以外的任意字符

\w

匹配单词字符

\s

匹配空白字符

\d

匹配数字

\b

匹配单词的开始或结束

^

匹配字符串的开始

$

匹配字符串的结束

注:单词字符是任何的字母,数字或者下划线字符。

三.反义字符

语法

匹配说明

\W

非单词字符

\S

非空白字符

\D

非数字字符

\B

不是单词开头或结束的位置

[^X]

除了x以外的任意字符

[^abc]

除了a,b或者c以外的任意字符

四.量词符

语法

说明

举例

*

重复零次或更多

aaaa匹配”a*”

+

重复一次或更多

a匹配”a+b*”

?

重复零次或一次

Java匹配”J?Java”

{n}

重复n次

Java匹配”Ja{1}”

{n,}

重复n次或更多次

aaaa匹配”a{1, }”

{n,m}

重复n到m次

aaaa匹配”a{1,9}”

注:1. *等同于{0,}  +等同于{1,}  ?等同于{0,1}

2.不要在重复量词符中使用空白。 A{3,6}不能写成A{3, 6}

3.任何字符串匹配正则表达式”.*”

五.转义字符

\

六.字符分枝

字符分枝多用于满足不同情况的选择,用“|”将不同的条件分割开来,比如有些固定电话区号有三位,有些有四位,这个时候可以采用字符分枝

例如:\d{3}-\d{8}|\d{4}-\d{8}  可以匹配两种不同长度区号的固定电话

七.字符分组

字符分组多用于将多个字符重复,主要通过使用小括号()来进行分组

形如:(\d\w){3} 重复匹配3次(\d\w)

例如,(ab){3}匹配ababab,但是ab{3}匹配abbb

八.常见正则表达式

正则表达式

匹配

示例

(ab|cd)

ab或者cd

ten匹配t(en|im)

[abc]

a,b或者c

Java匹配

Ja[uvnm]a

[a-z]

a到z

Java

匹配[A-M]av[a-k]

[^a-z]

除了a到z外的任意

字符

Java匹配Jav[^b-d]

[a-e[m-p]]

a到e或者m到p

Java 匹配[A-

G[I-M]]av[a-d]

[a-e&&[c-p]]

a到e与c到p的交集

Java 匹配[A-

P&&[I-M]]av[a-d]

\p{p}

一个标点字符

J?a匹配”J\p{p}a”

九.构建正则表达式

1.

社会安全号

6UpCFd9kpwpwTDMAzDJBP+wiG1DzLET+SVeiryRlrHKtAsizT49kKYfnJ5oSmGYRiGSSIcLA45KKeZFTTDwTP+ILwZE6mFc1CaWYFceW4aFo10yZkXVmgWhzEbwzvGQTpWEgzDMAzTaklx08AChmEYhmEYDVp0cCTDMAzDMMkFCweGYRiGYbRh4cAwDMMwjDYsHBiGYRiG0YaFA8MwDMMw2rBwYBiGYRhGGxYODMMwDMNow8KBYRiGYRhtWDgwDMMwDKMJ8P8Bu7pt6+FTOZ4AAAAASUVORK5CYII=

2.

验证手机号码

VH+io9u0QcQAAAABJRU5ErkJggg==

3.

验证身份证号(18位)

PLMkmeeYWowAAAABJRU5ErkJggg==

4.

验证QQ号(从10000开始)

MKYh7LRxrZb6v3sg9mjrMcp5cE8GIZhmKzFheVbgnrq8Uw9j4Ptse56MudVzkVtYQNK5b4+NI72yx7RRqh3tdZLOtTmKwOrMcMwDJMl8GT6DMMwDOMxGdnhimEYhmGyGRZfhmEYhvEYFl+GYRiG8RgWX4ZhGIbxGBZfhmEYhvEYFl+GYRiG8RgWX4ZhGIbxGBZfhmEYhvEU4P8DwaegCpv8iF8AAAAASUVORK5CYII=

5.

验证邮箱

P3QA9m4WbrH+AAAAAElFTkSuQmCC

十.替换和拆分字符串

1.

replaceAll:替换和拆分所有的字符串

wIw0fjoeuhhAAAAAElFTkSuQmCC

2.

replaceFirst:替换第一个匹配的字符串

1CaL93bSTTsAAAAAElFTkSuQmCC

3.

split(regex):使用匹配的分隔符将一个字符串拆分为子字符串

7wAAAABJRU5ErkJggg==

4.

split(regex,limit) limit参数确定匹配模式多少次

如果limit<=0,split(regex,limit)等同于split(regex)

vUf52zh57ZIhJUAAAAASUVORK5CYII=

十一.懒惰匹配和贪婪匹配

贪婪匹配:正则表达式中包含重复的限定符时,通常的行为是匹配尽可能多的字符。

懒惰匹配:匹配尽可能少的字符。

默认情况下,所有的量词符都是贪婪的。可以通过在后面添加问号来改变量词符的默认行为。

例如:第一个匹配成功的是aaa,第二个匹配成功的是a

BIRERERJ4xeCQiIiIizxg8EhEREZFnDB6JiIiIyDMGj0RERETkGYNHIiIiIvKMwSMREREReQT8f3ez3HT5duqpAAAAAElFTkSuQmCC

8bcgV5B5DwzAAAAAElFTkSuQmCC

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值