java.util.regex.PatternSyntaxException:索引12附近的非法重复
我对regEx不熟悉。我需要使用java验证电子邮件。我已经通过硬编码域名创建了用于电子邮件验证的正则表达式。但是域名应该是动态的。我已将域名作为参数传递。但我不知道如何在正则表达式中传递参数 但是我尝试了这段代码,然后得到了错误“java.util.regex.PatternSyntaxException:索引12附近的非法重复”。我遵循了一些答案,但对我没有帮助。从这些答案中,我理解了重复量词。你能告诉我我在这里遗漏了什么以及如何解决这个问题吗java.util.regex.PatternSyntaxException:索引12附近的非法重复,java,regex,email-validation,Java,Regex,Email Validation,我对regEx不熟悉。我需要使用java验证电子邮件。我已经通过硬编码域名创建了用于电子邮件验证的正则表达式。但是域名应该是动态的。我已将域名作为参数传递。但我不知道如何在正则表达式中传递参数 但是我尝试了这段代码,然后得到了错误“java.util.regex.PatternSyntaxException:索引12附近的非法重复”。我遵循了一些答案,但对我没有帮助。从这些答案中,我理解了重复量词。你能告诉我我在这里遗漏了什么以及如何解决这个问题吗 public static boolean v
public static boolean validateEmail(String email, String domainName) {
pattern = Pattern.compile("^([\\w-\\.]+)@ {"+ domainName +"}" , Pattern.CASE_INSENSITIVE);
matcher = pattern.matcher(email);
return matcher.matches();
}
{
和}
在regex中有意义,即指定字符重复之前的频率。例如,a{5}
匹配aaaaa
如果您想在正则表达式中使用大括号,应该像\\{
和\\}
那样对它们进行转义
但这并不是将其作为参数传递所需的,此时它将只是文本。如果您只想匹配这个文本域,那么可以执行
Pattern.compile(“^([\\w-\\.]+)@”+域名,Pattern.Pattern不区分大小写)
{
和}
在regex中有意义,即用于指定字符重复之前的频率。例如,a{5}
匹配aaaaa
如果您想在正则表达式中使用大括号,应该像\\{
和\\}
那样对它们进行转义
但这并不是将其作为参数传递所需的,此时它将只是文本。如果您只想匹配该文本域,您可以执行
Pattern.compile(“^([\\w-\\.]+)@”+域名,Pattern.Pattern不区分大小写)
您可以使用另一个问题的解决方案:Best的可能重复可能是首先验证您是否有语法正确的电子邮件地址(这很难正确,尤其是使用正则表达式),然后检查它是否以@domainName
@didiier L结尾,我已经通过硬编码域名来验证,比如“`^([\\w-\\.]+)@(example.com | example.uk | example.co.in | example.edu.in)$。由于我是regEx新手,我不知道如何在regEx中传递参数。现在我学习并修复了。感谢Didier L和@Madina Saidova的帮助。您可以使用另一个问题的解决方案:Best的可能副本可能是首先验证您是否有语法正确的电子邮件地址(这很难正确,尤其是使用正则表达式),然后检查它是否以@domainName
@didiier L结尾,我已经通过硬编码域名来验证,比如“`^([\\w-\\.]+)@(example.com | example.uk | example.co.in | example.edu.in)$。由于我是正则表达式新手,我不知道如何在正则表达式中传递参数。现在我学习并修复了。感谢Didier L和@Madina Saidova的帮助。