java.util.regex 包中有实现正则表达式所需的类:
Pattern
正则表达式编译后的表达形式,没有公共构造方法,需要调用静态 compile 方法生成 Pattern 对象。
Matcher
根据 Pattern 对象对字符串进行解释和匹配操作的引擎,没有公共构造方法,需要调用 Pattern 对象的 matcher 方法生成 Matcher 对象。
MatchResult
PatternSyntaxException
当正则表达式中存在语法错误时抛出,继承自 IllegalArgumentException,属于运行时异常。
定义正则表达式字符串;
编译生成 Pattern 对象;
调用 Pattern 对象的 matcher 方法生成 Matcher 对象;
调用 Matcher 对象的 matches 方法执行校验。
import org.junit.Assert;
import org.junit.Test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
@Test
public void test() {
// 只能输入数字
String regex = "^[0-9]*$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("0123456789");
Assert.assertTrue(matcher.matches());
matcher = pattern.matcher("A123456789");
Assert.assertFalse(matcher.matches());
}
}
正则语法大全
* 零次或多次匹配前面的字符或子表达式。例如,zo* 匹配"z"和"zoo"。* 等效于 {0,}。
+ 一次或多次匹配前面的字符或子表达式。例如,"zo+"与"zo"和"zoo"匹配,但与"z"不匹配。+ 等效于 {1,}。
$ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与"\n"或"\r"之前的位置匹配。
^ 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与"\n"或"\r"之后的位置匹配。
\d 数字字符匹配。等效于 [0-9]。
\D 非数字字符匹配。等效于 [^0-9]。
\n 换行符匹配。等效于 \x0a 和 \cJ。
网友评论