Regex 需要为50005000-20005000这样的字符串提供正则表达式的建议吗

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})?,

我的字符串中有两个部分,要么是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})?,?
但它并不完全匹配。
提前感谢您

将一个五位数字或两个五位数字之间用连字符进行匹配:

\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