转义字符,正则表达式,特殊字符,模式匹配

1. 常见的转义字符

字母前面加上反斜线 "\" 来表示常见的那些不能显示的ASCII字符.称为转义字符。如 \0, \t, \n 等。

 

转义字符

意义

ASCII码值(十进制)

\a

响铃(BEL)

007

\b

退格(BS) ,将当前位置移到前一列

008

\f

换页(FF),将当前位置移到下页开头

012

\n

换行(LF) ,将当前位置移到下一行开头

010

\r

回车(CR) ,将当前位置移到本行开头

013

\t

水平制表(HT) (跳到下一个TAB位置)

009

\v

垂直制表(VT)

011

\\

代表一个反斜线字符''\'

092

\'

代表一个单引号(撇号)字符

039

\"

代表一个双引号字符

034

\0

空字符(NULL)

000

\ddd

1到3位八进制数所代表的任意字符

三位八进制

\xhh

1到2位十六进制所代表的任意字符

二位十六进制

 

2. 正则表达式中的特殊字符

 在表达式中有特殊意义,需要在它前面添加 "\" 才能当作普通文本字符来使用。

 

使用正则表达式regex匹配特殊字符(2种方法记忆):

方法1:首先加"\"匹配该特殊字符本身,然后在转义字符(即"\")前加"\"

方法2:在特殊字符前加"\\"(或者使用[]),特别的"\"需要使用"\\\\"来匹配

 

字符

说明

input

regex1

regex2

^

匹配输入字符串的开始位置。要匹配 "^" 字符本身,请使用 "\^"

"^"

\\^

[^]

$

匹配输入字符串的结尾位置。要匹配 "$" 字符本身,请使用 "\$"

"$"

\\$

[$]

.

匹配除了换行符(\n)以外的任意一个字符。要匹配小数点本身,请使用 "\."

"."

\\.

[.]

[ ]

用来自定义能够匹配 '多种字符' 的表达式。要匹配中括号,请使用 "\[" 和 "\]"

"["

\\[

[\\[]

*

修饰匹配次数为次或任意次。要匹配 "*" 字符本身,请使用 "\*"

"*"

\\*

[*]

\

将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。

"\\"

\\\\

 

?

修饰匹配次数为次或 1 。要匹配 "?" 字符本身,请使用 "\?"

"?"

\\?

[?]

+

修饰匹配次数为至少 1。要匹配 "+" 字符本身,请使用 "\+"

"+"

\\+

[+]

{ }

修饰匹配次数的符号。要匹配大括号,请使用 "\{" 和 "\}"

"{"

\\{

[{]

|

左右两边表达式之间 "或" 关系。匹配 "|" 本身,请使用 "\|"

"|"

\\|

[|]

( )

标记一个子表达式的开始和结束位置。要匹配小括号,请使用 "\(" 和 "\)"

"("

\\(

[(]

 

3. java中使用正则表达式的情况

(1) String

public boolean matches(String regex)

public String replaceAll(String regex, String replacement)

public String replaceFirst(String regex, String replacement)

public String[] split(String regex)

 

(2) Pattern

public static Pattern compile(String regex)

public static boolean matches(String regex, CharSequence input)

 

典型的调用顺序是

Pattern p = Pattern.compile("a*b");

Matcher m = p.matcher("aaaaab");

boolean b = m.matches();

 

在仅使用一次正则表达式时

boolean b = Pattern.matches("a*b", "aaaaab");

 

java 示例

 1     /**
 2      * @title 密码验证,规则:长度8~30,不能含有#和空格,至少含有数字、大写、小写、特殊字符中的3种
 3      * @param password
 4      * @return boolean
 5      */
 6     private static boolean validatePassword(String password) {
 7         if (StringUtils.isBlank(password)) {
 8             return false;
 9         }
10         // 长度8~30
11         if (password.length() < 8 || password.length() > 30) {
12             return false;
13         }
14         // 不能含有#和空格
15         if (password.contains("#") || password.contains(" ")) {
16             return false;
17         }
18         int typecount = 0;
19         // 如果含有数字
20         if (Pattern.matches(".*[0-9]+.*", password)) {
21             typecount++;
22         }
23         // 如果含有大写字母
24         if (Pattern.matches(".*[A-Z]+.*", password)) {
25             typecount++;
26         }
27         // 如果含有小写字母
28         if (Pattern.matches(".*[a-z]+.*", password)) {
29             typecount++;
30         }
31         // 如果含有特殊字符
32         if (Pattern.matches(".*[^A-Za-z0-9]+.*", password)) {
33             typecount++;
34         }
35         // 至少含有数字、大写、小写、特殊字符中的3种
36         if (typecount < 3) {
37             return false;
38         }
39         return true;
40     }

 

转载于:https://www.cnblogs.com/zengzhihua/p/9037856.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值