判断一个字符串是否符和规定格式,就要用的正则匹配。
第一种是简单的String类的matches() 函数
@Test void testStringMatch() { // String 的正则表达式只能判断 String info = "我的手机号是:137-9172-3627"; String pattern = "(.+)\\d{3}-\\d{4}-\\d{4}"; assertTrue(info.matches(pattern)); }正在匹配常用概念很简单:
数字\d 字母字符\w 非字符\W 其他字符\S (例如标点符号、空格、换行)修饰前一个单元: 0次或者1次 ?号0次或者多次 *号1次或者多次 +号必须出现m次 {m}最少出现m次 {m,}最少m最多n次{m,n} 在多个中选择一个 多选其一 [ABC] 或者(A|B|C)范围选择 [a-zA-Z0-9]关于长度的约束例子
@Test void testPaternRange() { String oneOrMorePattern="\\w+"; assertTrue(Pattern.matches(oneOrMorePattern, "s")); assertTrue(Pattern.matches(oneOrMorePattern, "abcd")); assertFalse(Pattern.matches(oneOrMorePattern, "")); String zeroOrOnePattern="(\\w)?"; assertTrue(Pattern.matches(zeroOrOnePattern, "a")); // assertTrue(Pattern.matches(zeroOrOnePattern, "")); assertFalse(Pattern.matches(zeroOrOnePattern, "ab")); String zeroOrMorePattern="\\w*"; assertTrue(Pattern.matches(zeroOrMorePattern, "")); assertTrue(Pattern.matches(zeroOrMorePattern, "abcdef")); String mOrMorePattern="\\w{3,}"; assertTrue(Pattern.matches(mOrMorePattern, "abc")); assertTrue(Pattern.matches(mOrMorePattern, "abcdefg")); assertFalse(Pattern.matches(mOrMorePattern, "ab")); String leastMlargestNPattern="\\w{2,4}"; assertTrue(Pattern.matches(leastMlargestNPattern, "ab")); assertTrue(Pattern.matches(leastMlargestNPattern, "abc")); assertTrue(Pattern.matches(leastMlargestNPattern, "abcd")); assertFalse(Pattern.matches(leastMlargestNPattern, "a")); }范围多选一
@Test void testOptional(){ String oneOfAnArray="a[\\+\\-\\*/]b"; assertTrue(Pattern.matches(oneOfAnArray,"a/b")); assertTrue(Pattern.matches(oneOfAnArray,"a*b")); String a_Or_b ="a|A"; assertTrue(Pattern.matches(a_Or_b,"a")); assertTrue(Pattern.matches(a_Or_b,"A")); String azAZ ="[a-zA-Z0-9]"; assertTrue(Pattern.matches(azAZ,"a")); assertTrue(Pattern.matches(azAZ,"h")); assertTrue(Pattern.matches(azAZ,"j")); assertTrue(Pattern.matches(azAZ,"C")); assertTrue(Pattern.matches(azAZ,"2")); assertTrue(Pattern.matches(azAZ,"8")); }