JAVA中的isMirror函数_Java 正则初探

正则表达 初探*

走进沼泽

问题引出

问题:判断一个String字符串是否为数字字符串

将字符串转换为字符数组

判断每一个字符是否在“0~9”范围之间

public class TestDemo {

public static void main(String [] args) {

String str = "123" ;

System.out.println(isNumber(str));

}

public static boolean isNumber(String temp) {

char data [] = temp.toCharArray();

for (int x = 0 ; x < data.length ; x ++ ) {

if (data[x] > '9' || data[x] < '0') {

return false ;

}

}

return true;

}

}

上述问题改用正则表达判断

public class TestDemo {

public static void main(String [] args) {

String str = "123" ;

System.out.println(str.matches("\\d+"));

}

}

java.util.regex 包

Pattern 类

需要使用 compile() 方法来取得类对象

Matcher 类

需要 Pattern 类取得

正则标记(熟记)

java.util.regex.Pattern 中定义正则标记

字符

匹配

x

字符 x

\ \

反斜杠

\ t

制表符

\ n

换行

ps:在正则中出现对符号的正则,均需要反斜杠进行转移(\ \)

字符集

匹配

[abc]

表示字符a,b,c中任意一位

[^abc]

表示不是字符 a,b,c 中任意的一位

[a-z]

所有的小写字母

[A-Z]

所有的大写字母

字符集表达式

匹配

.

任意一位的字符

\d

匹配一位数字“[0-9]"(在代码中两杠等于一个杠)

\D

不匹配数字 [ ^0-9 ]

\s

任意的空白字符 (\t \n ……)

\S

任意的非空白字符

\w

表示任意字母、数字、下划线 [ a-zA-Z_0-9]

\W

表示非字母、数字、下划线 [ ^a-zA-Z_0-9]

边界匹配,建议在JavaScript中使用,不在java中使用

符号

匹配

^

正则的开始

$

正则的结束

数量表达

正则 ?:表示此正则可以出现0或1次

正则 + :表示此正则可以出现1或多次

正则 * :表示此正则可以出现0、1或多次

正则 {n}:表示此正则出现N次

正则{n,}:表示此正则出现N+次

正则{n,m}: 表示此正则出现n~m次

逻辑运算

正则1 正则2:正则1判断以后继续完成判断正则2

正则1|正则2:正则1或正则2 有一组满足即可

(正则集):将多个正则作为一组,可以设置这一组单独设置出现的次数

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)

全部拆分

public String [] split(String regex , int limit)

部分拆分

实例

字符串替换

public class TestDemo {

public static void main(String [] args) {

String str = "Mirror is niubi" ;

String regex = "[^a-z]" ; // 正则

System.out.println(str.replaceAll(regex,""));

}

}

将不是小写的字母用空字符代替

分隔字符

public class TestDemo {

public static void main(String [] args) {

String str = "Mirror12342is1231niu123123bi" ;

String regex = "\\d+" ; // 正则 1个以上的数字

String result [] = str.split(regex); // 数组

for (int x = 0; x < result.length; x++) {

System.out.println(result[x]);

}

}

}

按照数字为条件分隔字符,并被分隔的字符串存入数组中

验证字符串是否是数字,如果是变为double型

public class TestDemo {

public static void main(String [] args) {

String str = "10.1" ;

String regex = "\\d+(\\.\\d+)?" ; // 正则 小数

System.out.println(str.matches(regex));

if (str.matches(regex)) {

System.out.println(Double.parseDouble(str));

// 将str转换为double输出

}

}

}

判断str是否是IPv4地址

public class TestDemo {

public static void main(String [] args) {

String str = "192.168.1.1" ;

String regex = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}" ;

String regexs = (\\d{1,3}\\.){3}\\d{1,3}; //正则简化

System.out.println(str.matches(regex));

if (str.matches(regex)) {

System.out.println(str);

}

}

}

判断是否为日期格式,如果是转为Date型数据

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class TestDemo {

public static void main(String [] args) throws ParseException {

String str = "2009-01-01" ;

String regex = "\\d{4}-\\d{2}-\\d{2}" ;

System.out.println(str.matches(regex));

if (str.matches(regex)) {

Date date = new SimpleDateFormat("yyyy-MM-dd").parse(str);

System.out.println(date);

}

}

}

判断电话号码:(如下是合法的电话号码格式)

12345678

010-12345678

(010)-12345678

public class TestDemo {

public static void main(String [] args) throws ParseException {

String str = "(010)-12345678" ;

//String regex = "(\\d{7,8})|(\\d{3,4}-\\d{7,8})|(\\(\\d{3,4}\\)-\\d{7,8})" ;

String regex = "((\\d{3,4}-)|(\\(\\d{3,4}\\)-)?\\d{7,8})";

System.out.println(str.matches(regex));

}

}

最原始的 第4行 正则是繁琐的,而第5行 正则则是简单的,由于电话号码的前缀是特殊的三种状态:无前缀、有前缀、带括号的前缀;所以我们运用括号来将后两种的前缀状态进行判断,设置了"?" 符号表示正则只使用一次正则。

E-mail地址验证*

地址由字母、数字、下划线组成

hello@word.com(模拟的虚假mail)

用户名要求由字母、数字、下划线、数字点组成,其中必须以字母开头、字母数字做结尾。用户名长度不超过30;而根域名只可以是指定的根域名

public class TestDemo {

public static void main(String [] args) throws ParseException {

String str = "hello@word.com" ;

String regex = "[a-zA-Z]?[a-zA-Z0-9_\\.]{0,28}[0-9a-zA-Z]\\@?\\w+\\.?(com|net|cn|gov|edu|org)";

System.out.println(str.matches(regex));

}

}

java.util.regex 包

Pattern

public class TestDemo {

public static void main(String [] args) throws ParseException {

String str = "hello@word.com" ;

String regex = "\\d+";

java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(regex);// 编译正则

String result [] = pattern.split(str); // 拆分字符串

System.out.println(Arrays.toString(result)); //输出结果

}

Matcher

public class TestDemo {

public static void main(String [] args) throws ParseException {

String str = "1234567" ;

String regex = "\\d+";

java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(regex);// 编译正则

Matcher mat = pattern.matcher(str); // 进行正则匹配

System.out.println(mat.matches()); // 匹配结果

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值