目录
- 一、需求
- 二、单字符匹配(6个)
- 三、预定义字符(7个)
一、需求
❓ 现有一个字符串,需满足如下要求:① [6, 18] 个字符② 只能包含字母、数字、下划线③ 需以字母开头❓ 如果字符串满足上述要求,返回 true,否则返回 false
public static boolean validString(String s) {
return s.matches(\”[a-zA-Z][a-zA-Z0-9_]{5,17}\”);
}
🍀 正则表达式用极简的规则取代了复杂的验证逻辑🍀 Regex Expression🍀 正则表达式是一种通用的技术,适用于多种编程语言
二、单字符匹配(6个)
✏️ ① [abc]:字符串的某个位置(某一个字符)满足 a、b、c 中的一个
🍀 某个位置:该【单字符匹配】放的位置
public class TestDemo {
public static void main(String[] args) {
String regex = \”[zgq]\”;
System.out.println(\”z\”.matches(regex)); // true
System.out.println(\”g\”.matches(regex)); // true
System.out.println(\”q\”.matches(regex)); // true
System.out.println(\”zgq\”.matches(regex)); // false
}
}
public class TestDemo {
public static void main(String[] args) {
String regex = \”26[abc]3q\”;
System.out.println(\”26a3q\”.matches(regex)); // true
System.out.println(\”26abc\”.matches(regex)); // false
System.out.println(\”26b3q\”.matches(regex)); // true
}
}
✏️ ② [^abc]:除了 a、b、c 之外的任意单个字符
public class TestDemo {
public static void main(String[] args) {
String regex = \”[^cat]666\”;
System.out.println(\”c666\”.matches(regex)); // false
System.out.println(\”a666\”.matches(regex)); // false
System.out.println(\”t666\”.matches(regex)); // false
System.out.println(\”bb666\”.matches(regex)); // false
System.out.println(\”b666\”.matches(regex)); // true
}
}
public class TestDemo {
public static void main(String[] args) {
String regex1 = \”[12345]666\”;
String regex2 = \”[^1-5]666\”;
System.out.println(\”1666\”.matches(regex1)); // true
System.out.println(\”3666\”.matches(regex1)); // true
System.out.println(\”5666\”.matches(regex1)); // true
System.out.println(\”6666\”.matches(regex1)); // false
System.out.println(\”1666\”.matches(regex2)); // false
System.out.println(\”3666\”.matches(regex2)); // false
System.out.println(\”5666\”.matches(regex2)); // false
System.out.println(\”6666\”.matches(regex2)); // true
}
}
✏️ ③ [a-zA-z]:匹配单个英文字母
public class TestDemo {
public static void main(String[] args) {
String regex = \”[a-zA-Z]666\”;
System.out.println(\”6666\”.matches(regex)); // false
System.out.println(\”b666\”.matches(regex)); // true
}
}
✏️ ④ [a-d[1-6]]:和 [a-d1-6] 一样(并集)
public class TestDemo {
public static void main(String[] args) {
String regex1 = \”[a-d[1-6]]\”;
String regex2 = \”[a-d1-6]\”;
System.out.println(\”a\”.matches(regex1)); // true
System.out.println(\”e\”.matches(regex1)); // false
System.out.println(\”1\”.matches(regex1)); // true
System.out.println(\”7\”.matches(regex1)); // false
System.out.println(\”a\”.matches(regex2)); // true
System.out.println(\”e\”.matches(regex2)); // false
System.out.println(\”1\”.matches(regex2)); // true
System.out.println(\”7\”.matches(regex2)); // false
}
}
✏️ ⑤ [zgq&&[god]]:交集
public class TestDemo {
public static void main(String[] args) {
String regex1 = \”[zgq&&[god]]\”;
System.out.println(\”q\”.matches(regex1)); // false
System.out.println(\”d\”.matches(regex1)); // false
System.out.println(\”g\”.matches(regex1)); // true
}
}
✏️ ⑥ [zgq&&[god]]:取差集
public class TestDemo {
public static void main(String[] args) {
String regex1 = \”[zgq&&[^god]]\”;
System.out.println(\”q\”.matches(regex1)); // true
System.out.println(\”d\”.matches(regex1)); // false
System.out.println(\”g\”.matches(regex1)); // false
System.out.println(\”z\”.matches(regex1)); // true
// 取差集, 从字母 a 到字母 z 中去除字母 b 和 d
String regex2 = \”[a-z&&[^bd]]\”;
System.out.println(\”d\”.matches(regex2)); // false
System.out.println(\”a\”.matches(regex2)); // true
}
}
三、预定义字符(7个)
预定义字符匹配的仍然是单个字符
📝 【.】:任意单个字符📝 【\\d】:数字📝 【\\D】:非数字📝 【\\s】:空白📝 【\\S】:非空白📝 【\\w】:字母(英文字母、下划线、数字)📝 【\\W】:非英文字母
🍀 Java 中需以两个【\\】开头表示预定义字符
public class TestDemo {
public static void main(String[] args) {
String r1 = \”.\”;
System.out.println(\”@\”.matches(r1)); // true
System.out.println(\”庆\”.matches(r1)); // true
System.out.println(\”I\”.matches(r1)); // true
System.out.println(\” \”.matches(r1)); // true
System.out.println(\”.\”.matches(r1)); // true
}
}
public class TestDemo {
public static void main(String[] args) {
// 匹配 java 文件
String r1 = \”.\\\\.java\”;
System.out.println(\”a.java\”.matches(r1)); // true
System.out.println(\”xjava\”.matches(r1)); // false
System.out.println(\”5java\”.matches(r1)); // false
}
}
public class TestDemo {
public static void main(String[] args) {
String r1 = \”[abc]\”;
String r2 = \”\\\\[abc\\\\]\”;
System.out.println(\”a\”.matches(r1)); // true
System.out.println(\”c\”.matches(r1)); // true
System.out.println(\”[abc]\”.matches(r1)); // false
System.out.println(\”a\”.matches(r2)); // false
System.out.println(\”c\”.matches(r2)); // false
System.out.println(\”[abc]\”.matches(r2)); // true
}
}
到此这篇关于Java 中的正则表达式(单字符匹配和预定义字符)的文章就介绍到这了,更多相关java正则表达内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!
您可能感兴趣的文章:
- Java正则表达式匹配字符串并提取中间值的方法实例
- java如何用正则表达式匹配与提取字符串
- Java正则表达式循环匹配字符串方式
- 正则表达式匹配${key}并在Java中使用的详细方法
- java正则表达式匹配所有数字的案例
- Java使用正则表达式匹配获取链接地址的方法示例
- Java基于正则表达式实现查找匹配的文本功能【经典实例】