Regex 需要为50005000-20005000这样的字符串提供正则表达式的建议吗
我的字符串中有两个部分,要么是5个数字,要么是5个数字,后面跟着另外5个数字,中间带破折号 例如:Regex 需要为50005000-20005000这样的字符串提供正则表达式的建议吗,regex,Regex,我的字符串中有两个部分,要么是5个数字,要么是5个数字,后面跟着另外5个数字,中间带破折号 例如: 12345,54321-74185,78945 54321-12345,12345,12345-54321 12345 65432-54321 我想形成一个正则表达式来精确匹配这个字符串。 如果用户输入以下示例: 12345-54321,5000 2000,50000-20000 20000-50000,12345 它不应该匹配。 我已经试过了 (\d{5}),?(\d{5}-\d{5})?,
12345,54321-74185,78945
54321-12345,12345,12345-54321
12345
65432-54321
我想形成一个正则表达式来精确匹配这个字符串。
如果用户输入以下示例:
12345-54321,5000
2000,50000-20000
20000-50000,12345
它不应该匹配。
我已经试过了
(\d{5}),?(\d{5}-\d{5})?,?
但它并不完全匹配。
提前感谢您将一个五位数字或两个五位数字之间用连字符进行匹配:
\d{5}(-\d{5})
要匹配以逗号分隔的此类值列表,请执行以下操作:
\d{5}(-\d{5})?(,\d{5}(-\d{5})?)*
对完整字符串执行精确匹配的步骤
^\d{5}(-\d{5})?(,\d{5}(-\d{5})?)*$
核查:
var regex=/^\d{5}(-\d{5})(,\d{5}(-\d{5}))*$/
变量字符串=[
'12345,54321-74185,78945',
'54321-12345,12345,12345-54321',
'12345',
'65432-54321',
'12345-54321,5000',
'2000,50000-20000',
'20000-50000,12345'
];
strings.forEach(函数(str){
log(regex.test(str),str);
});代码>如果您希望重复以下内容之一:
- 只有5位数字
\d{5}
- 只有5位数字和5位数字之间有破折号
\d{5}-\d{5}
\d{5}-\d{5}
后跟重复的,\d{5}、\d{5}-\d{5}
\d{5}
后跟重复的,\d{5}-\d{5}、\d{5}
那么也许像这样的正则表达式就是你想要的:
解释
- 字符串的开头
^
- 匹配5位数字
\d{5}
- 可选的非捕获组
(?:
- 它匹配5个数字,中间有破折号,5个数字
\d{5}-\d{5}
- 后跟一个非捕获组
(?:
- 哪个匹配
,\d{5},\d{5}-\d{5}
- 关闭捕获组
)
- 并重复零次或多次
*
- 或
|
- 匹配5位数字
\d{5}
- 后跟一个非捕获组
(?:
- 哪个匹配
,\d{5}-\d{5},\d{5}
- 关闭捕获组
)
- 并重复零次或多次
*
- 关闭第一个非捕获组
)
- 字符串的结尾
$
这5组数字重复多少次?是否有限制,或者是任意的?同样在第二组的第二个样本中,2000
是4位数字,这是打字错误吗?@GCP不是类型我说它不应该匹配你说它应该匹配,编辑它。为什么这个不匹配<代码>20000-5000012345