java.util.regex.PatternSyntaxException:索引 12 附近的非法重复
java.util.regex.PatternSyntaxException: Illegal repetition near index 12
我是正则表达式的新手。我需要使用 java 验证电子邮件。我通过对域名进行硬编码来创建用于电子邮件验证的正则表达式。但是域名应该是动态的。我已将域名作为参数传递。但我不知道如何在正则表达式中传递参数。
但我试过这段代码,然后我得到错误“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();
}
{
和 }
在正则表达式中有意义,即指定字符重复的频率。例如。 a{5}
匹配 aaaaa
.
如果你想在正则表达式中使用花括号,你应该像 \{
和 \}
.
那样转义它们
但这不是将 this 作为参数传递所需的内容 — 届时它只是文字文本。如果你只想匹配那个文字域,你可以做 Pattern.compile("^([\w-\.]+)@" + domainName, Pattern.CASE_INSENSITIVE)
.
我是正则表达式的新手。我需要使用 java 验证电子邮件。我通过对域名进行硬编码来创建用于电子邮件验证的正则表达式。但是域名应该是动态的。我已将域名作为参数传递。但我不知道如何在正则表达式中传递参数。
但我试过这段代码,然后我得到错误“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();
}
{
和 }
在正则表达式中有意义,即指定字符重复的频率。例如。 a{5}
匹配 aaaaa
.
如果你想在正则表达式中使用花括号,你应该像 \{
和 \}
.
但这不是将 this 作为参数传递所需的内容 — 届时它只是文字文本。如果你只想匹配那个文字域,你可以做 Pattern.compile("^([\w-\.]+)@" + domainName, Pattern.CASE_INSENSITIVE)
.