通过String regex (定义标准表达式)
通过String 类型的 . matches方法经行比较
元字符:
元字符 | 在正则表达式的写法 | 意义 |
. | . | 任何一个字符 |
\d | \\d | 0到9的任何一个数 |
\D | \\D | 任何一个非数字字符 |
\s | \\s | 空格类字符 \'t' '\n' '\x0B' '\f' '\r' |
\S | \\S | 非空格类字符 |
\w | \\w | 可用于标识符的字符 不包含美元符 |
\\W | \\W | 不能用于标识符的字符 |
\p{Lower} | \\p{Lower} | 小写字母[a - z] |
\p{Upper} | \\p{Upper} | 大写字母[A - Z] |
\p[ASCLL] | \\p[ASCLL] | ASCLL字符 |
\p[Alpha] | \\p[Alpha] | 字母 |
\p{digit} | \\p{digit} | 数字字符[0 - 9] 与\\d 有在String中有区别 即\\p{digit}在String中无法使用而\\d可以 |
\p{Alnum} | \p{Alnum} | 字母或数字 |
\p{Punct} | \\p{Punct} | 表点字符 |
正则表达式中的 [ ]
1 任意一个字符表示匹配任意对应的字符,如a匹配a,7匹配7,-匹配-。
2 []代表匹配中括号中其中任一个字符,如[abc]匹配a或b或c。
3 -在中括号里面和外面代表含义不同,如在外时,就匹配-,如果在中括号内[a-b]表示匹配26个小写字母中的任一个;[a-zA-Z]匹配大小写共52个字母中任一个;[0-9]匹配十个数字中任一个。
4. ^在中括号里面和外面含义不同,如在外时,就表示开头,如^7[0-9]表示匹配开头是7的,且第二位是任一数字的字符串;如果在中括号里面,表示除了这个字符之外的任意字符(包括数字,特殊字符),如[^abc]表示匹配出去abc之外的其他任一字符。
限定符
1 X? 表示X出现0次或1次。
2 X+ 表示X出现1次或多次。
3 X* 表示X出现0次、1次或多次。
4 X{n} 表示X出现n次。
5 X{n,m} 表示X出现n~m次。
6 X{n,} 表示X出现n次或n次以上。
7 XY表示X后面跟着Y,这里X和Y分别是正则表达式的一部分。
8 X|Y表示X或Y,比如"food|f"匹配的是foo(d或f),而"(food)|f"匹配的是food或f。
9 (X)子表达式,将X看做是一个整体。
例:
测试说明
文件名(fileName
)和邮箱(email
)会作为函数的参数传入。
输入
HelloWorld.java
laurenyang@edu.com
输出: Java文件名正确
邮箱名正确
import java.util.*; publi class HelloWorld { public static void judge(String fileName,String email){ String javaName = "((\\p{Alnum}{1,}\\.){1,}java)"; //java 文件名 String emailName = "(\\p{Alnum}{1,}\\@.\\p{Alnum}{1,}\\.\\p{Alnum}{1,})"; //邮箱名 boolean match1 = fileName.matches(javaName); boolean match2 = email.matches(emailName); if(match1){ System.out.println("Java文件名正确"); } else{ System.out.println("Java文件名无效"); } if(match2){ System.out.println("邮箱名正确"); } else{ System.out.println("邮箱名无效"); } } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String javaName = scanner.nextLine(); String emailName = scanner.nextLine(); judge(javaName , emailName); } }1. import java.util.*; 2. 3. publi class HelloWorld { 4. 5. public static void judge(String fileName,String email){ 6. 7. String javaName = "((\\p{Alnum}{1,}\\.){1,}java)"; //java 文件名 8. 9. String emailName = "(\\p{Alnum}{1,}\\@.\\p{Alnum}{1,}\\.\\p{Alnum}{1,})"; //邮箱名 10. 11. boolean match1 = fileName.matches(javaName); 12. 13. boolean match2 = email.matches(emailName); 14. 15. if(match1){ 16. 17. System.out.println("Java文件名正确"); 18. 19. } 20. 21. else{ 22. 23. System.out.println("Java文件名无效"); 24. 25. } 26. 27. if(match2){ 28. 29. System.out.println("邮箱名正确"); 30. 31. } 32. 33. else{ 34. 35. System.out.println("邮箱名无效"); 36. 37. } 38. 39. } 40. 41. public static void main(String[] args) { 42. 43. Scanner scanner = new Scanner(System.in); 44. 45. String javaName = scanner.nextLine(); 46. 47. String emailName = scanner.nextLine(); 48. 49. judge(javaName , emailName); 50. 51. } 52. 53. 54. 55. }