gpt4 book ai didi

java - 正则表达式 java 模式不验证?

转载 作者:行者123 更新时间:2023-11-30 06:26:12 25 4
gpt4 key购买 nike

正则表达式 "String regex = "[0-9a-z]+@[0-9a-z]+.+[0-9a-z]";" 是用于测试电子邮件验证。基本上,我试图做到这一点,如果电子邮件以一串字母数字字符开头,然后是 1 @ 符号,然后是另一串字母数字字符,然后是 1 .,最后是 a,则电子邮件只会匹配此模式字母数字字符的字符串。失败的是,当我在最后一个 . 之后输入没有字母数字字符串的电子邮件时,程序仍将与正则表达式字符串匹配。我该怎么做才能让 . 之后必须有另一串字母数字?整个代码是:

import java.util.Scanner;
import java.util.regex.*;

public class Regex
{
public static void main (String[]args){

Scanner input = new Scanner(System.in);
System.out.println("Please enter your Email");
String mail = input.nextLine();

String regex = "[0-9a-z]+@[0-9a-z]+.+[0-9a-z]";

Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(mail);

if(m.find()) {
System.out.println("VALID");
} else {
System.out.println("INVALD");
}
}
}

最佳答案

表达式中的未转义 . 代表任何 字符。您需要使用 \\.[.] 来匹配文字点。

String regex = "[0-9a-z]+@[0-9a-z]+[.]+[0-9a-z]";

点后的 + 表示“先前表达式的一次或多次出现”。上面,“先验表达式”是一个点。要匹配电子邮件域地址中的多个段,您需要添加括号:

String regex = "[0-9a-z]+@([0-9a-z]+[.])+[0-9a-z]+";

关于java - 正则表达式 java 模式不验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14675155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com