正则表达式

String.matches()来进行正则验证

 

正则表达式的构造摘要

 

x

字符 x(任意字符)

t

制表符 ('/u0009')

/n

新行(换行)符 ('/u000A')

/r

回车符 ('/u000D')

/f

换页符 ('/u000C')

/e

转义符 ('/u001B')

 

[abc]

ab c(简单类)

[^abc]

任何字符,除了 ab c(否定)

[a-zA-Z]

a z A Z,两头的字母包括在内(范围)

[a-d[m-p]]

a d m p[a-dm-p](并集)

[a-z&&[def]]

de f(交集)

[a-z&&[^bc]]

a z,除了 b c[ad-z](减去)

[a-z&&[^m-p]]

a z,而非 m p[a-lq-z](减去)

 

.

任何字符(与行结束符可能匹配也可能不匹配)

/d

数字:[0-9]

/D

非数字: [^0-9]

/s

空白字符:[ /t/n/x0B/f/r]

/S

非空白字符:[^/s]

/w

单词字符:[a-zA-Z_0-9]

/W

非单词字符:[^/w]

 

^

行的开头

$

行的结尾

/b

单词边界

/B

非单词边界

/A

输入的开头

/G

上一个匹配的结尾

/Z

输入的结尾,仅用于最后的结束符(如果有的话)

/z

输入的结尾

 

X?

X,一次或一次也没有

X*

X,零次或多次

X+

X,一次或多次

X{n}

X,恰好 n

X{n,}

X,至少 n

X{n,m}

X,至少 n 次,但是不超过 m

 

XY

X 后跟 Y

X|Y

X Y

(X)

X,作为捕获组

 

举例:

 

1.验证一个字符串是否以大写字母开始。

[A-Z][a-zA-Z]*

说明:[A-Z]表示此单词以大写字母A-Z开始。[a-zA-Z]*表示后接0个或几个a-zA-Z范围的字母。

*表示0个或几个,+表示1个或几个。

 

1.     验证一串数字是否为如下格式:123-345-5673或125-3234555(红色部分不能为0)

[1-9]//d{2}-[1-9]//d{2}-?//d{4}

说明:/d表示数字,但在Java里,/表示转义,所以要用//d。

第二个-是可要可不要的,所以用-?来加以判断。表示0个或一个。

 

2.     验证一个字符串是否为以下格式:123 Main 或 123 Main Street

//d+//s+([a-zA-Z]+|[a-zA-Z]+//s[a-zA-Z])

说明:/s表示空格。|表示与两边的表达式之一匹配即可。第二个//s

没有+,表示此处只能有一个空格。

 

4.验证字符串是否为汉字

[/u4E00-/u9FA5]

说明:中文并非只包含在这个范围内,还包括F900-FA2D.

[/u4E00-/u9FA5/uF900-/uFA2D](实际上只是CJK字符集的范围,并不是完全意义上的中文。)

 

替换和分割字符串

 

1.     将字符串中的“*”替换成“ ”。 如:"abc*123*III**df"

replaceAll("//*"," ");

说明:这里使用了//*,而不是*。因为*在正则中有它的意思。所以使用/*,但/在正则中也有

含义,所以要使用//*。

 

2.     将字符中的字母和数字替换成“word”。如: "this is a 测试"

replaceAll(//w,word);

说明://w表示任何字符[a-zA-Z0-9],因此此替换不会替换空格和中文字符。

 

 

3. replaceFirst:替换第一个与模式匹配的字符串。如“1-one 2-two     3-three”,将数字替换为“digit”

for(int i=0;i<3;i++){

      s=s.replaceFirst("//d","digit");

    }

说明:每次替换第一个遇到的数字。

 

4.split:根据匹配的正则表达式将原字符串分割开,不存为字符串数组。

: 将字符串“1-one 2-two     3-three”以空格分割开并存为数组。

s.split("//s+");

说明: 之所以是//s+是因为空格可能不为一。但不可用//s*。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值