java.util.regex.PatternSyntaxException:索引12附近存在非法重复



我是regEx的新手。我需要使用java验证电子邮件。我已经通过硬编码域名为电子邮件验证创建了regEx。但是域名应该是动态的。我已将域名作为参数传递。但我不知道如何在regEx中传递参数。

但我尝试了这段代码,然后得到了错误">java.util.regex.PatternSyntaxException:索引12附近的非法重复"。我遵循了一些答案,但这对我没有帮助。从这些答案中,我理解了重复量词。你能告诉我我在这里遗漏了什么以及如何解决这个问题吗?

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匹配。

如果您想在regex中使用大括号,您应该像\{\}一样转义它们。

但这并不是将其作为参数传递所需要的——在这一点上,它只是文本。如果您只想匹配那个字面域,您可以执行Pattern.compile("^([\w-\.]+)@" + domainName, Pattern.CASE_INSENSITIVE)

最新更新