💥 该系列属于【Java基础编程500题】专栏,如您需查看Java基础的其他相关题目,请您点击左边的连接
目录
1. 检测是不是QQ号(6位及20位之内,0不能在开头,必须全部是数字)
2. 判断字符串是否为手机号码。 手机号码规则:以1开头,第二位是3/4/5/7/8之一,后面跟着9位数字。
7. 检查字符串是否为有效的电子邮件地址。 电子邮件地址规则:包含一个或多个字符@,后面跟着一个或多个字符,一个点,然后是两个或三个字母。
10. 使用正则表达式检查字符串是否为有效的日期格式(YYYY-MM-DD)。
11. 给定一个包含HTML标签的字符串,删除所有的HTML标签。
16. 检查字符串是否以字母开头,并且后面跟着任意数量的字母或数字。
17. 检查字符串是否以字母开头,并且后面跟着任意数量的字母或数字。
20. 验证字符串是否以 “http://” 开头,并且以“.com” 结尾。
23. 提取字符串中的日期和时间(格式:YYYY-MM-DD HH:MM:SS)。
24. 检查字符串是否为有效的电子邮件地址,并提取用户名和域名。
✨✨ 返回题目目录 ✨ ✨
1. 检测是不是QQ号(6位及20位之内,0不能在开头,必须全部是数字)
public class Main {
public static void main(String[] args) {
//[]是或,{}是重复次数
String qq = "1234567890";
System.out.println(qq.matches("[1-9]\\d{5,19}"));
}
}
2. 判断字符串是否为手机号码。 手机号码规则:以1开头,第二位是3/4/5/7/8之一,后面跟着9位数字。
public class Main {
public static void main(String[] args) {
String phone1 = "13812345678";
String phone2 = "12345678900";
System.out.println("phone1是否为手机号码:" + phone1.matches("1[34578]\\d{9}"));
System.out.println("phone2是否为手机号码:" + phone2.matches("1[34578]\\d{9}"));
}
}
3. 将字符串中的所有数字替换成“*”。
public class Main {
public static void main(String[] args) {
String str = "我喜欢数字123和456";
String result = str.replaceAll("\\d", "*");
System.out.println("替换后的字符串:" + result);
}
}
4. 分割字符串,以非数字字符为分隔符。
public class Main {
public static void main(String[] args) {
String str = "abc123def456ghi";
String[] result = str.split("\\d+");
for (String s : result) {
System.out.println("分割后的字符串:" + s);
}
}
}
5. 提取字符串中的所有数字。
public class Main {
public static void main(String[] args) {
String str = "这里有数字123和456,还有7890";
System.out.println("提取的数字有:" + str.replaceAll("\\D+", " ")); // D要大写
}
}
6. 删除字符串中的所有空白字符。
public class Main {
public static void main(String[] args) {
String str = " 字符串 中有 空白字符 ";
System.out.println("删除空白字符后的字符串:" + str.replaceAll("\\s+", ""));
}
}
7. 检查字符串是否为有效的电子邮件地址。 电子邮件地址规则:包含一个或多个字符@,后面跟着一个或多个字符,一个点,然后是两个或三个字母。
public class Main {
public static void main(String[] args) {
String email1 = "[email protected]";
String email2 = "test@domain";
System.out.println("email1是否为有效电子邮件地址:" + email1.matches("\\w+@\\w+\\.\\w{2,3}"));
System.out.println("email2是否为有效电子邮件地址:" + email2.matches("\\w+@\\w+\\.\\w{2,3}"));
}
}
8. 给定一个字符串,检查它是否只包含字母和数字。
public class Main {
public static void main(String[] args) {
String input = "Abc123";
boolean isAlphanumeric = input.matches("[A-Za-z0-9]+");
System.out.println("该字符串是否只包含字母和数字:" + isAlphanumeric);
}
}
9. 使用正则表达式检查字符串是否只包含字母和数字。
public class Main {
public static void main(String[] args) {
String input = "Abc123";
boolean isAlphanumeric = input.matches("[A-Za-z0-9]+");
System.out.println("该字符串是否只包含字母和数字:" + isAlphanumeric);
}
}
10. 使用正则表达式检查字符串是否为有效的日期格式(YYYY-MM-DD)。
public class Main {
public static void main(String[] args) {
String date = "2023-12-31";
boolean isValidDate = date.matches("\\d{4}-\\d{2}-\\d{2}");
System.out.println("该字符串是否为有效的日期格式:" + isValidDate);
}
}
11. 给定一个包含HTML标签的字符串,删除所有的HTML标签。
public class Main {
public static void main(String[] args) {
String htmlContent = "这是一个<b>加粗</b>的文本和一个<i>斜体</i>文本";
String textWithoutHtml = htmlContent.replaceAll("<[^>]*>", "");
System.out.println("去除HTML标签后的字符串:" + textWithoutHtml);
}
}
12. 提取字符串中的所有邮箱地址。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String text = "我的邮箱是[email protected],他的邮箱是[email protected]";
Pattern pattern = Pattern.compile("\\w+@\\w+\\.\\w+");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("找到邮箱:" + matcher.group());
}
}
}
13. 从字符串中提取出所有的网址。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String text = "网站地址是http://www.example.com,还有一个https://secure.example.com";
Pattern pattern = Pattern.compile("http[s]?://(\\w+\\.)+\\w+");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("找到网址:" + matcher.group());
}
}
}
14. 检查字符串是否含有"张"。(模糊查询)
public class Main {
public static void main(String[] args) {
String name = "张医生";
if (name.matches(".*张.*")) {
System.out.println("字符串含有'张'");
} else {
System.out.println("字符串不含有'张'");
}
}
}
15. 检查字符串是否包含至少一个小写字母和一个大写字母。
public class Main {
public static void main(String[] args) {
String input = "AbcDef";
if (input.matches(".*[a-z].*") && input.matches(".*[A-Z].*")) {
System.out.println("字符串包含至少一个小写字母和一个大写字母");
} else {
System.out.println("字符串不符合要求");
}
}
}
16. 检查字符串是否以字母开头,并且后面跟着任意数量的字母或数字。
public class Main {
public static void main(String[] args) {
String input = "Apple123";
if (input.matches("^[A-Za-z][A-Za-z0-9]*$")) {
System.out.println("字符串以字母开头,后面跟着字母或数字");
} else {
System.out.println("字符串不符合要求");
}
}
}
17. 检查字符串是否以字母开头,并且后面跟着任意数量的字母或数字。
public class Main {
public static void main(String[] args) {
String input = "Apple123";
if (input.matches("^[A-Za-z][A-Za-z0-9]*$")) {
System.out.println("字符串以字母开头,后面跟着字母或数字");
} else {
System.out.println("字符串不符合要求");
}
}
}
18. 验证字符串是否以 “http://” 开头。
public class Main {
public static void main(String[] args) {
String url = "http://www.example.com";
if (url.matches("^http://.*")) {
System.out.println("字符串以 'http://' 开头");
} else {
System.out.println("字符串不以 'http://' 开头");
}
}
}
19. 验证字符串是否以 “.com” 结尾。
public class Main {
public static void main(String[] args) {
String email = "http://www.example.com";
if (email.matches(".*\\.com$")) {
System.out.println("字符串是有效的电子邮件地址");
} else {
System.out.println("字符串不是有效的电子邮件地址");
}
}
}
20. 验证字符串是否以 “http://” 开头,并且以“.com” 结尾。
public class Main {
public static void main(String[] args) {
String email = "http://www.example.com";
if (email.matches("^http://.*\\.com$")) {
System.out.println("字符串是有效的电子邮件地址");
} else {
System.out.println("字符串不是有效的电子邮件地址");
}
}
}
21. 检查字符串是否只包含字母,并且长度为5。
public class Main {
public static void main(String[] args) {
String word = "Apple";
if (word.matches("^[A-Za-z]{5}$")) {
System.out.println("字符串只包含字母,并且长度为5");
} else {
System.out.println("字符串不符合要求");
}
}
}
22. 将字符串中的所有连续重复的字符缩减为单个字符。
public class Main {
public static void main(String[] args) {
String text = "aaabbbccca";
String reducedText = text.replaceAll("(.)\\1+", "$1");
System.out.println("缩减后的字符串:" + reducedText); //abca
// (.):这是一个捕获组,. 表示匹配任意单个字符,而括号 () 表示将匹配到的字符作为一个捕获组。在这个例子中,捕获组会捕获一个字符。
// \\1:这是一个反向引用,它引用了第一个捕获组 (.) 匹配到的内容。\\1 表示匹配与第一个捕获组相同的内容。
// +:这是一个量词,表示前面的元素(这里是反向引用 \\1)可以出现一次或多次。
// $1:这是对第一个捕获组的引用,在替换文本中,它会被第一个捕获组匹配到的字符所替换。
}
}
23. 提取字符串中的日期和时间(格式:YYYY-MM-DD HH:MM:SS)。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String dateTime = "事件发生在 2023-04-05 14:23:56";
Pattern pattern = Pattern.compile("(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})");
Matcher matcher = pattern.matcher(dateTime);
if (matcher.find()) {
System.out.println("日期:" + matcher.group(1) + "-" + matcher.group(2) + "-" + matcher.group(3));
System.out.println("时间:" + matcher.group(4) + ":" + matcher.group(5) + ":" + matcher.group(6));
}
}
}
24. 检查字符串是否为有效的电子邮件地址,并提取用户名和域名。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String email = "[email protected]";
Pattern pattern = Pattern.compile("^(\\w+)@(\\w+\\.\\w+)$");
Matcher matcher = pattern.matcher(email);
if (matcher.find()) {
System.out.println("是有效的电子邮件地址");
System.out.println("用户名:" + matcher.group(1));
System.out.println("域名:" + matcher.group(2));
} else {
System.out.println("不是有效的电子邮件地址");
}
}
}
25. 提取字符串中的HTML标签及其属性。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String html = "<a href='http://example.com'>链接</a>";
Pattern pattern = Pattern.compile("<(\\w+)(.*?)>(.*?)</\\1>"); // \\1表示跟第一个捕获组一样的内容
Matcher matcher = pattern.matcher(html);
while (matcher.find()) {
System.out.println("标签:" + matcher.group(1)); //标签:a
System.out.println("属性:" + matcher.group(2).trim()); //属性:href='http://example.com'
System.out.println("内容:" + matcher.group(3)); //内容:链接
}
}
}
26. "\\b"匹配独立的单词 “cat”。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String text = "I have a cat named Cat.";
// \b 在正则表达式中表示单词边界,它确保匹配的字符串前后不是其他单词字符(通常是字母、数字或下划线)
Pattern pattern = Pattern.compile("\\bcat\\b");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("匹配的单词: \"" + matcher.group() + "\" 在位置: " + matcher.start());
}
}
}
27. 匹配以 “a” 开头和以 “z” 结尾的单词。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String text = "apples azimuth banana";
Pattern pattern = Pattern.compile("\\ba\\w*s\\b");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("匹配的单词: \"" + matcher.group() + "\" 在位置: " + matcher.start());
}
}
}
28. 匹配字符串开头的大写字母。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String text = "This is a Test.";
Pattern pattern = Pattern.compile("\\b[A-Z]");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("匹配的大写字母: \"" + matcher.group() + "\" 在位置: " + matcher.start());
}
//匹配的大写字母: "T" 在位置: 0
//匹配的大写字母: "T" 在位置: 10
}
}
29. 匹配字符串结尾的数字。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String text = "The number is 42.";
Pattern pattern = Pattern.compile("\\d+\\b");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("匹配的数字: \"" + matcher.group() + "\" 在位置: " + matcher.start());
}
}
}
30. 将字符串中的每个单词首字母大写,其余字母小写。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String text = "hello world";
Pattern pattern = Pattern.compile("\\b(\\w)(\\w*)\\b");
Matcher matcher = pattern.matcher(text);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, matcher.group(1).toUpperCase() + matcher.group(2).toLowerCase());
}
matcher.appendTail(sb);
System.out.println("转换后的字符串:" + sb.toString());
}
}