基本规则
符号 | 含义 |
---|---|
^ | 匹配输入字符串的开始位置 |
$ | 匹配输入字符串的结束位置 |
() | 标记一个子表达式 开始 和 结束 的位置 |
* | 匹配前面的子表达式零次或者多次 |
+ | 匹配前面的子表达式一次或者多次 |
? | 匹配前面的子表达式零次或者一次 |
{n} | n 是一个非负整数。匹配确定的 n 次 |
{n,} | n 是一个非负整数。至少匹配n 次 |
{n,m} | m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。 |
. | 匹配除换行符 \n 之外的任何单字符 |
正则截取字符串中间的内容
参考这里
String str = "abcdefaaa";
String regexp = "bc(.*)fa";
Pattern pattern = Pattern.compile(regexp);
Matcher matcher = pattern.matcher(str);
// matcher.find()方法必须调用,如果不调用会报错
if (matcher.find()) {
// 包含前后匹配字符
System.out.println(matcher.group()); ==> bcdefa
// 不包含前后匹配字符
System.out.println(matcher.group(1)); ==> de
}
匹配数字和字符串
String str = "ab12";
str.matches("^[a-z0-9A-Z]*$"); ==> true
str.matches("^[a-z0-9A-Z]+$"); ==> true
str.matches("^[a-z0-9A-Z]?$"); ==> false
String str = "";
str.matches("^[a-z0-9A-Z]*$"); ==> true
str.matches("^[a-z0-9A-Z]+$"); ==> false
str.matches("^[a-z0-9A-Z]?$"); ==> true
英文字母开头,只能包含英文字母、数字、下划线
参考这里
String str = "sa_sb";
str.matches("^[a-zA-Z][a-z0-9A-Z_]*$"); ==> true