java - 如何为具有定义长度的十进制正则表达式(包括逗号)
问题描述
我正在寻找带小数点的 15 个字符长度的正则表达式。在 swift 文档中,正则表达式如下所示: 3!a15d 其中 3!a 表示 [a-zA-Z]{3} 和 15d 表示 15 个字符长度的小数点和逗号。
我尝试了下面的正则表达式:
([A-Z]{3}[0-9]{1,14}[,][0-9]{1})|([A-Z]{3}[0-9]{1,13}[,][0-9]{1,2})|([0-9]{1,12}[,][0-9]{1,3})|([0-9]{1,11}[,][0-9]{1,4})|([0-9]{1,10}[,][0-9]{1,5})|([0-9]{1,9}[,][0-9]{1,6})|([0-9]{1,8}[,][0-9]{1,7})|([0-9]{1,7}[,][0-9]{1,8})|([0-9]{1,6}[,][0-9]{1,9})|([0-9]{1,5}[,][0-9]{1,10})|([0-9]{1,4}[,][0-9]{1,11})|([0-9]{1,3}[,][0-9]{1,12})|([0-9]{1,2}[,][0-9]{1,13})|[0-9]{1}[,][0-9]{1,14}
但它没有用。你有什么建议可以帮助我吗?
解决方案
您可以使用
^[a-zA-Z]{3}(?=[^,]*,[^,]*$)\d(?:,?\d){14}$
请参阅正则表达式演示。
详情:
^
- 字符串的开始[a-zA-Z]{3}
- 三个 ASCII 字母(?=[^,]*,[^,]*$)
- 字符串中只能出现一个强制逗号\d
- 一个数字(?:,?\d){14}
- 可选逗号和数字的十四次重复$
- 字符串结束。
Java 中用于验证字符串的示例用法:
Boolean isValid = text.matches("[a-zA-Z]{3}(?=[^,]*,[^,]*$)\\d(?:,?\\d){14}");
推荐阅读
- excel - Excel 帮助:如何使用取决于多个变量的表中的数据填充单元格
- php - php setcookie,域在 chrome 中未正确限制,但在 Firefox 中
- kubernetes - 尝试安装 Kubernetes 时遇到问题 [openstack 上的 ubuntu18 映像]
- java - java for 以“true”作为停止条件的循环?
- c - 涉及 C 中结构的 IP 地址程序的问题
- javascript - jQuery 查找已注册事件的状态
- python - 如何在二维中制作具有不同长度的 Numpy 3D 数组?
- c++ - C/C++ 线程在条件上的神奇差异
- angular - 类型 'string' 不可分配给类型 'ArrayBuffer | 共享数组缓冲区 | 类数组
' - r - 我的模式匹配和替换功能有什么问题