java - java.util.regex.PatternSyntaxException:索引 12 附近的非法重复
问题描述
我是正则表达式的新手。我需要使用 java 验证电子邮件。我通过硬编码域名创建了用于电子邮件验证的正则表达式。但是域名应该是动态的。我已将域名作为参数传递。但我不知道如何在正则表达式中传递参数。
但我尝试了这段代码,然后我得到了错误“ java.util.regex.PatternSyntaxException: Illegal repeat near index 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
。
如果你想在正则表达式中使用花括号,你应该像\\{
and一样转义它们\\}
。
但这不是您将其作为参数传递所需要的——此时它只是文字文本。如果您只想匹配该文字域,则可以执行Pattern.compile("^([\\w-\\.]+)@" + domainName, Pattern.CASE_INSENSITIVE)
.
推荐阅读
- python-3.x - 跟踪排序算法
- c++ - 查找函数末尾的行号
- firebase - 从包管理器导入外部依赖项管理器 (EDM) 和 Firebase 核心后出现 GUID 错误
- android - 如何使用 Room 在片段上更新 Livedata 对象?
- javascript - 无法从 GUI 上传文件
- javascript - 为什么我的 redux-observable 史诗没有被触发?
- python - 时间延迟对PyQt5 QThreadPool()执行的影响
- neo4j - 搜索路径中的所有关系/节点并按属性列表过滤 Neo4j
- .net - 如何在 .NET Core 中为 VSCode 中的新控制器创建新视图?
- c# - DevExpress:数据表中的行索引->gridview 中的行句柄