正则表达式(Java)

来源:互联网 发布:suse linux vsftp 编辑:程序博客网 时间:2024/06/04 17:54

正则表达式

介绍:实际应用中,我们经常会用到需要匹配、查找、替换、判断字符串的情况,正则表达式是解决这类问题的主要手段。正则表达式是一种字符串的语法规则,是一种可以用于模式匹配和替换的规则,主要用于文本和字符串处理。

1、元字符

元字符 写法 意义 . . 任何一个字符 \d \\d 0~9的任何一个数字 \D \\D 任何一个非数字字符 \s \\s 空格类字符,‘\t’、‘\n’、‘\x0B’、‘\f’、‘\r’ \S \\S 非空格类字符 \w \\w 可用于标识符的字符(不包含美元符号) \W \\W 不能用于标识符的字符 \p{Lower} \\p{Lower} <小写字母[a-z] \p{Upper} \\p{Upper} 大写字母[A-Z] \p{ASCII} \\p{ASCII} ASCII字符 \p{Alpha} \\p{Alpha} 字母 \p{digit} \\p{digit} 数字字符[0-9] \p{Alnum} \\p{Alnum} 字母或数字 \p{Punct} \\p{Punct} 标点符号 \p{graph} \\p{graph} 可视字符,\p{Alnum}\p{Punct} \p{Print} \\p{Print} 可打印字符,\p{graph} \p{Blank} \\p{Blank} 空格或制表符 \p{Cntrl} \\p{Cntrl} 控制字符[\x00-\x1F\x7F]



例:使用正则表达式判断给定的字符串是否符合格式:大写字母+3个小写字符+3个数组

public class Main{     public static void main(String[] args) {        String regex = "\\p{Upper}\\p{Lower}\\p{Lower}\\p{Lower}\\d\\d\\d";        String[] msg = {"ABCd001", "Abcd002"};        for (int i = 0; i < msg.length; i++)            System.out.println(msg[i] + (msg[i].matches(regex) ? "合法" : "不合法"));    }}

结果:
这里写图片描述


2、” [ ] ” 符

方括号元字符 含义 [abcde] 匹配a、b、c、d、e中的任意一个字符 [a-h] 匹配a-h之间的任意一个字符 [^fgh] 不与f、g、h中的任意一个字符匹配 a-d[m-p] 代表a-d,或m-p中的任何一个字符(并) a-z&&[def] 代表d、e、f中的任意一个字符(交) a-f&&[^bc] 代表a、d、e、f(差)

3、限定符

带限定符号的模式 含义 X? X出现0次或一次 X* X出现0次或多次 X+ X出现1次或多次 X{n} X出现n次 X{n,} X至少出现n次 X{n,m} X出现n至m次 XY X后跟Y X | Y X或Y



例:通过正则表达式判断手机号是否合法
说明:手机号码前三位有13+任意数字,15+0、3、6~9任意一位,18+6、8、9任意一位;后8位为任意数字。

public class Main{     public static void main(String[] args) {        String regex = "(13\\d|15[036-9]|18[689])\\d{8}";        String[] msg = {"987654321", "12345678901", "18612345678"};        for (int i = 0; i < msg.length; i++)            System.out.println(msg[i] + (msg[i].matches(regex) ? "合法" : "不合法"));    }}

结果:
这里写图片描述


ps:更复杂的还要多练习才能掌握哦 ^_^

原创粉丝点击