Java 中的正则表达式特殊字符
Rupam Yadav
2023年10月12日
Regex(正则表达式)是用于操作、搜索和处理文本字符串的有用工具。它简化并减少了程序中的行数。
我们将看看如何在正则表达式中使用特殊字符。
Java 正则表达式中的特殊字符
正则表达式是一种表示文本匹配模式的文本语法。正则表达式使用特殊字符,例如 .
、+
、*
、?
、^
、$
、(
、)
、[
、]
、{
、}
、|
、\
。
正则表达式中的字符(字符串中表示其模式的字符)要么是具有特殊含义的元字符,要么是具有字面含义的常规字符。
元字符 | 用途 | 例子 |
---|---|---|
^ |
字符串或否定符号的开头 | ^a 匹配字符串开头的 a |
. |
匹配除换行符以外的任何单个字符 | a.[0-9] 匹配 a 字符串,该字符串具有 a 后跟一个字符和一个数字 |
[] |
匹配括号中包含的单个字符的括号表达式 | [a-c] 等于 a 或 b 或 c , 即 a|b|c 也 [abc] |
[^] |
匹配未包含在括号中的单个字符 | [^abc] 匹配除 a 、b 或 c 以外的任何字符 |
$ |
队伍的尽头 | ^abc$ 匹配以 abc 开头和结尾的字符串 |
() |
分组字符 | (ab)\1 匹配 abab |
* |
匹配前面的元素或零次或多次 | ab*c 匹配 ac 、abc 、abbbc 等。 |
{m,n} |
匹配前面的元素至少 m 次且不超过 n 次 | a{3,5} 匹配 aaa , aaaa , aaaaa |
? |
匹配前面的元素零次或一次 | ab?c 匹配 ac , abc |
+ |
匹配前面的元素一次或多次 | ab+c 匹配 abc 、abbc 、abbbc 等,但不匹配 ac |
| |
选择运算符,它匹配运算符 `\ 之前的表达式或之后的表达式 | ` |
\ |
转义或反斜杠 | 常见的转义序列,如 \n 或换行符,\t 用于制表符 |
在 Java 中使用正则表达式特殊字符的示例
在这个例子中,我们使用了 java.util.regex
包中的 Pattern
和 Matcher
类。Pattern
类表示正则表达式。
当我们创建 Pattern
类的实例时,我们将正则表达式作为字符串传递。
这里我们有一个正则表达式 regex_pattern
作为字符串。此模式用于检查密码是否符合以下条件。
- 密码中必须包含至少一位
[0-9]
。 - 密码中至少需要一个小写字符
[a-z]
。 - 密码中至少需要一个大写字符
[A-Z]
。 - 至少一个特殊字符,如
! @ # & ()
,必须包含在密码中。 - 密码长度必须至少为 8 个字符且不超过 24 个字符。
compile()
方法从指定的正则表达式创建一个模式。稍后我们将使用此模式制作一个 Matcher
对象。
该模式可以使用 Matcher
对象与正则表达式的任何字符序列匹配。matcher
方法创建一个匹配器,将给定的输入与模式匹配。
我们将两个字符串与模式匹配并打印输出(matches()
方法返回的布尔值)。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
public static void main(String[] args) {
String regex_pattern =
"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#&()–[{}]:;',?/*~$^+=<>]).{8,24}$";
Pattern pattern = Pattern.compile(regex_pattern);
String inputPassword1 = "Password1@@1990";
String inputPassword2 = "Pass190";
Matcher matcher1 = pattern.matcher(inputPassword1);
Matcher matcher2 = pattern.matcher(inputPassword2);
System.out.println("Password 1 matches pattern : " + matcher1.matches());
System.out.println("Password 2 matches pattern : " + matcher2.matches());
}
}
输出:
Password 1 matches pattern : true
Password 2 matches pattern : false
作者: Rupam Yadav
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn