寻求可匹配*******-1234格式的Java正则表达式解决方案
解决匹配*******-1234格式的正则问题
你的原始正则^[0-9-*]无法工作的原因很明确:它仅能匹配单个字符(数字、连字符或星号),而且只校验字符串开头的第一个字符,完全不符合你需要的“若干星号+连字符+数字序列”的格式。
根据你给出的示例格式,这里提供几种针对性的正则方案:
1. 固定长度匹配(严格匹配7个星号+4位数字)
如果你的格式是固定的7个星号加4位数字,用这个:
^\*{7}-\d{4}$
^:匹配字符串开头\*{7}:匹配恰好7个星号(*在正则里是特殊字符,必须用\转义)-:匹配字面量连字符\d{4}:匹配恰好4位数字$:匹配字符串结尾
2. 可变长度匹配(任意数量星号+任意数量数字)
如果星号和数字的数量不固定,但必须满足“至少1个星号+连字符+至少1个数字”的结构:
^\*+-\d+$
\*+:匹配1个或多个星号\d+:匹配1个或多个数字
3. 范围长度匹配(自定义星号和数字的数量范围)
比如要求星号在5-10个之间,数字在3-6位之间:
^\*{5,10}-\d{3,6}$
{5,10}:匹配5到10个星号{3,6}:匹配3到6位数字
测试示例
- 匹配成功:
*******-1234、********-56789、*****-123 - 匹配失败:
******1234(缺少连字符)、*****-abcd(数字部分非数字)、****--1234(多个连字符)
内容的提问来源于stack exchange,提问作者Black Hawk
相关产品推荐
相关产品推荐

