正则表达式
Posted houyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
正则表达式对照表(来自百度,仅供参考)
正则表达式 |
匹配的字符串 |
k |
k |
abc |
abc |
[abc] |
a, b, c |
[abc][123] |
a1,b3,c2,a3,b1,c2 |
[a-z] |
a,z,g,r |
[a-zA-Z_0-9] |
a,A,0,9,_ |
[u4e00-u9fa5] |
中文范围 |
d |
数字 [0-9] |
D |
排除数字 [^0-9] |
w |
单词字符[a-zA-Z_0-9] |
W |
排除单词字符 |
s |
空白字符 |
S |
排除空白字符 |
. |
任意字符 |
[abc]? |
? 0或1个 a,b,,c |
[abc]?[123] |
a1,b2,c3,3,1 |
[abc]* |
* 0到多个 a,aa,,abcaccbcacb |
[abc]+ |
+ 1到多个 a,ab,abc,abcbcbcca |
[abc]{3} |
3个 aaa,bab,abc,cba,cca |
[abc]{3,5} |
3到5个 abc,abca,abcab |
[abc]{3,} |
3到多个,至少3个 abc,abcc,cbccaaaccbca |
| |
或 |
^ |
字符集内,表示排除; 字符集外,表示起始位置 |
^ad+ |
a5,a5342,a6343,a463452 |
$ |
表示结尾位置 |
d+a$ |
5a,6345a,64534522a |
字符串的一些正则表达式匹配运算常用方法
matches(正则)
当前字符串,是否能与指定的正则表达式相匹配
split(正则)
"abc,def,ghi"
["abc", "def", "ghi"]
replaceAll(正则,子串)
两段示例代码
身份证号与电话号
1 import java.util.Scanner; 2 5 public class Test1 { 7 public static void main(String[] args) { 9 System.out.println(" -----------------"); 11 f1(); 13 System.out.println(" -----------------"); 15 f2(); 17 } 20 21 private static void f1() { 23 System.out.println("输入身份证号:"); 25 String s = new Scanner(System.in).nextLine(); 27 /* 29 * 123456789012345 31 * 123456789012345678 33 * 12345678901234567x 35 * 12345678901234567X 37 * 39 * d{15}| 41 * d{15}|d{17} 43 * d{15}|d{17}[dxX] 45 * 47 * 正则表达式中的“”, 49 * 在Java字符串中要写成转义格式 51 * \d{15}|\d{17}[\dxX] 53 * 55 */ 57 //判断输入格式 59 String regex = "\d{15}|\d{17}[\dxX]"; 61 if(s.matches(regex)) { 63 System.out.println("格式正确"); 65 } else { 67 System.out.println("格式错误"); 69 } 71 } 72 77 private static void f2() { 79 System.out.println("输入固定电话号码:"); 81 String s = new Scanner(System.in).nextLine(); 83 /* 85 * 1234567 87 * 12345678 89 * 010-1234567 91 * 0101-12345678 93 * (010)1234567 95 * (0101)12345678 97 * 99 * d{7,8} 101 * (区号)?d{7,8} 103 * (|)?d{7,8} 105 * (d{3,4}-|)?d{7,8} 107 * (d{3,4}-|())?d{7,8} 109 * (d{3,4}-|())?d{7,8} 111 * (d{3,4}-|(d{3,4}))?d{7,8} 113 * 115 * (\d{3,4}-|\(\d{3,4}\))?\d{7,8} 117 * 119 */ 121 //判断输入格式 123 String regex = "(\d{3,4}-|\(\d{3,4}\))?\d{7,8}"; 125 if(s.matches(regex)) { 127 System.out.println("格式正确"); 129 } else { 131 System.out.println("格式错误"); 133 } 135 } 137 } 138 139
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性