java - 具有唯一数字的正则表达式
问题描述
我正在尝试创建一个正则表达式,其中唯一数字用逗号分隔,最多 5 位数字,数字允许为 1-10。例如
1,2,3,4,5 - 有效
1,2,2,4,5 - 无效(因为它允许定义重复的数字)
但我想要正则表达式,我们只能输入唯一的数字。我在我的正则表达式下面提到它允许用逗号分隔的数字并允许 1-10 之间的 5 位数字。
^([1-9]|10)(?:,([1-9]|10)){0,4}$
请帮助如何定义这个只允许唯一数字的正则表达式
解决方案
您可以使用
^(?!.*\b(\d+)\b.*\b\1\b)(?:[1-9]|10)(?:,(?:[1-9]|10)){0,4}$
查看在线正则表达式演示。
(?!.*\b(\d+)\b.*\b\1\b)
如果有重复的相同数字块作为整个单词(用单词边界位置括起来),则否定前瞻将失败任何匹配。
请参阅Java 演示:
List<String> strs = Arrays.asList("1,2,3,4,5", "1,2,2,4,5");
String rx = "(?!.*\\b(\\d+)\\b.*\\b\\1\\b)(?:[1-9]|10)(?:,(?:[1-9]|10)){0,4}";
for (String str : strs)
System.out.println(str + ": " + str.matches(rx));
输出:
1,2,3,4,5: true
1,2,2,4,5: false
请注意,Java 代码中省略了模式的开头和结尾处的 and,因为^
需要完整的字符串匹配。$
.matches
推荐阅读
- web-scraping - 使用 ImportHTML 和 Google 表格进行网络抓取
- javascript - 如何在 Vis.js / D3.js 中以圆形模式排列节点
- angular - 模块“AppModule”导入的意外指令“MatAutoCompleteTrigger”。请添加@NgModule 注释
- python - 在运行的 bash 脚本中重定向 pip 安装消息
- python - 在 Keras 中检查模型输入以获取验证数据时出错
- javascript - 合并(更新)数组中的相同对象
- java - Jersey MultiPartRequest 接收 null
- html - 垂直对齐不适用于纯文本?
- php - OpenLDAP PHP 添加生日属性
- git - 带有 Git 的 Azure Devops 仅建议对最新提交的拉取请求