以下代码是判断字符串是否为邮箱的正确格式.
public static void main(String[] args) { /* * fancq@tedu.com * [0-9a-zA-Z_]+@[0-9a-zA-Z]+(\.[a-zA-Z]+)+ * * boolean matches(String regex) * 匹配当前字符串是否符合给定的正则表达式的格式要求 */ String mail = "1836360247@qq.com"; String regex = "[0-9a-zA-Z_]+@[0-9a-zA-Z]+(\\.[a-zA-Z]+)+"; boolean match = mail.matches(regex); if(match) { System.out.println("是邮箱!"); }else { System.out.println("不是邮箱!"); } }
然后我们也可以将当前字符串按照满足正则表达式的部分替换为给定字符串
public static void main(String[] args) { String str = "abc123def456ghi"; /* * 将当前字符串中的数字部分替换为#NUMBER# * abc#NUMBER#def#NUMBER#ghi */ str =str.replaceAll("[0-9]+", "#NUMBER#"); System.out.println(str); }
接下来的这段代码是和谐用语,将所输入的脏话转为**,不管是几位的脏话都转为两个星号,防止有些人想要去猜别人究竟骂的是什么
public static void main(String[] args) { String regex = "(wqnmlgb|cnm|sb|mdzz|nc|djb|nmsl|ngdsb|wc)"; String message = "wc!你个sb!你怎么这么nc!你就一个djb!"; message = message.replaceAll(regex, "**"); System.out.println(message); }
运行结果就是这样的:
String[] split (String regex)
将当前字符串中按照满足正则表达式的部分进行拆分,
并将拆分后的若干段字符串以数组形式返回
String str = "abc123def456ghi"; /* * 将当前字符串按照数字部分进行拆分,得到所有的字母部分 */ String[] data =str.split("[0-9]+"); System.out.println(data.length); for(int i=0;i<data.length;i++){ System.out.println(data[i]); }
运行结果如下图
根据 Java Language Specification 的要求,Java 源代码的字符串中的反斜线被解释为 Unicode 转义或其他字符转义。因此必须在字符串字面值中使用两个反斜线,表示正则表达式受到保护,不被 Java 字节码编译器解释。例如,当解释为正则表达式时,字符串字面值 “\b” 与单个退格字符匹配,而 “\\b” 与单词边界匹配。字符串字面值 “\(hello\)” 是非法的,将导致编译时错误;要与字符串 (hello) 匹配,必须使用字符串字面值 “\\(hello\\)”。