以下是一些 Java 中常用的正则表达式语法:
-
字面量字符:
- 字母和数字:例如
a
,b
,1
,2
。 - 空格:
- 符号:
.
,+
,*
,?
,^
,$
,|
,()
,[]
,{}
,-
,\
等。
- 字母和数字:例如
-
字符类:
[abc]
: 匹配字符集合中的任何一个字符。例如,[abc]
匹配a
,b
, 或c
中的任何一个。[a-z]
: 匹配指定范围内的任何一个小写字母。[A-Z]
: 匹配指定范围内的任何一个大写字母。[0-9]
: 匹配任何一个数字字符。[^abc]
: 在字符集合之前加上^
表示匹配除了字符集合中的任何字符之外的任意字符。
-
预定义字符类:
\d
: 匹配任何一个数字字符,等价于[0-9]
。\D
: 匹配任何一个非数字字符,等价于[^0-9]
。\w
: 匹配任何一个单词字符,包括字母、数字、下划线,等价于[a-zA-Z0-9_]
。\W
: 匹配任何一个非单词字符,等价于[^a-zA-Z0-9_]
。\s
: 匹配任何一个空白字符,包括空格、制表符、换行符等。\S
: 匹配任何一个非空白字符。
-
量词:
*
: 匹配前面的字符零次或多次。+
: 匹配前面的字符一次或多次。?
: 匹配前面的字符零次或一次。{n}
: 匹配前面的字符恰好 n 次。{n,}
: 匹配前面的字符至少 n 次。{n,m}
: 匹配前面的字符至少 n 次,但不超过 m 次。
-
边界匹配:
^
: 匹配字符串的开始位置。$
: 匹配字符串的结束位置。\b
: 匹配单词的边界。
-
组合和分组:
()
: 将多个字符组合成一个单元,可以使用|
,[]
,\d
等结合在一起。
-
转义字符:
\
: 转义字符,用于转义特殊字符,使其失去特殊意义。
这些是 Java 中常用的正则表达式语法。使用正则表达式时,可以根据实际需要组合这些语法来编写复杂的匹配规则。
常见的正则示例:
Java 正则匹配URL 、手机号码、IP、邮箱地址
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
// URL 正则表达式
String urlPattern = "^(http|https)://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?$";
// 手机号码正则表达式
String phonePattern = "^1[3-9]\\d{9}$";
// IP 地址正则表达式
String ipPattern = "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$";
// 邮箱地址正则表达式
String emailPattern = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
// 要匹配的字符串
String[] strings = {
"http://www.example.com",
"https://www.example.com/path/to/page",
"ftp://ftp.example.com",
"http://localhost:8080",
"invalid_url",
"13012345678",
"invalid_phone_number",
"192.168.1.1",
"256.300.0.1",
"invalid_ip_address",
"user@example.com",
"invalid_email_address"
};
// 创建 Pattern 对象
Pattern urlPatternObj = Pattern.compile(urlPattern);
Pattern phonePatternObj = Pattern.compile(phonePattern);
Pattern ipPatternObj = Pattern.compile(ipPattern);
Pattern emailPatternObj = Pattern.compile(emailPattern);
// 对每个字符串进行匹配
for (String str : strings) {
// 匹配 URL
Matcher urlMatcher = urlPatternObj.matcher(str);
if (urlMatcher.matches()) {
System.out.println(str + " 是合法的 URL");
}
// 匹配手机号码
Matcher phoneMatcher = phonePatternObj.matcher(str);
if (phoneMatcher.matches()) {
System.out.println(str + " 是合法的手机号码");
}
// 匹配 IP 地址
Matcher ipMatcher = ipPatternObj.matcher(str);
if (ipMatcher.matches()) {
System.out.println(str + " 是合法的 IP 地址");
}
// 匹配邮箱地址
Matcher emailMatcher = emailPatternObj.matcher(str);
if (emailMatcher.matches()) {
System.out.println(str + " 是合法的邮箱地址");
}
}
}
}