【发布时间】:2014-08-28 02:34:33
【问题描述】:
我将在我的应用程序中添加对通配符的支持。
应满足以下要求。通配符必须包含:
- UTF-8 alphabetical characters
- .,*,^,+,?,$,[],[^],:,/
- Domain parts other than the last may begin with a digit(from RFCs)
用户也可以指定简单的域名为test.test
我们的想法是分两步完成:
-
验证通配符是否与以下模式匹配:
^[\\pL0-9\\[\\].^$?*+:/]+。如果匹配,则尝试编译为 java 模式。 - 如果它与最后一个正则表达式不匹配,则假定它是简单域名并使用谷歌库
com.google.common.net.InternetDomainName对其进行验证
但我不确定最后一种方法是否会涵盖所有可能的情况。
例如,当我这样指定域时:
test.10 匹配pattern,但不满足域中数字的第三条要求。
如果您的建议能说明我如何才能满足所有已定义的要求,那就太好了。在这种情况下,最好知道更好的解决方案。
【问题讨论】:
-
(^[\\pL0-9\\[\\].^$?*+:/]+\\.)?^[\\pL\\[\\].^$?*+:/]+ -
感谢您的快速回答。我试过你的模式。但不幸的是,它没有按预期工作。所以它不匹配以下被认为有效的域与第三个要求:10test.com,test.10test.com
标签: java regex validation