java - Java - 如何验证不允许的字符?
问题描述
[0-9]
如果 String 值包含不是数字、连字符(-)
、分号(;)
或感叹号的任何不同字符,我想抛出异常(!)
。
例如,这是一个完全正确的字符串:1;3;5-9;!12-14
但是这个不是:1;3abc;5~9;?12*41
我正在尝试使用下面的代码,但总是失败:
String values = "1;3;5-9;!12-14"
Pattern pattern = Pattern.compile("[\\d*]|[\\;]|[\\-]|[\\!]");
if (!pattern.matcher(values).matches()) {
throw new Exception();
}
解决方案
您的正则表达式[\\d*]|[\\;]|[\\-]|[\\!]
使用 4 次字符类,该字符类将匹配单个字符类中的字符。
您可以将它们全部放在一个字符类中,断言字符串的开头^
和结尾$
并重复一次或多次:
推荐阅读
- bash - 将文件名附加到 Bash 中父目录的最后 3 个字符
- elasticsearch - Elasticsearch 匹配带有斜线字符的日期
- ip - 授予对 view.officeapps.live.com 的访问权限
- powershell - 用于 URL 监控的 Powershell 脚本
- angular - 以角度应用过滤器管道后如何获取记录总数
- python - 你如何在这个场景中使用全局?
- azure-devops - 如何在 Azure DevOps 工作项模板中添加消息“选择字段‘XYZ’的值”,而不将该字段标记为必填?
- qt - Qt 中有哪些工具可以解码 HTML 4 实体?
- excel - Texbox 设置谷歌浏览器路径?
- java - 如何执行join();mainThread 上的函数?