Regex 正则表达式末尾的可选值

Regex 正则表达式末尾的可选值,regex,Regex,各位,我有以下数据: 有效数据: 08902-00243 08902-00243-1 08902-00243-12 08902-002 cat 08902-00243-844 08902-0024A- 08902-0024A-45 08902-00243- 无效数据: 08902-00243 08902-00243-1 08902-00243-12 08902-002 cat 08902-00243-844 08902-0024A- 08902-0024A-45 08902-002

各位,我有以下数据:

有效数据:

08902-00243
08902-00243-1
08902-00243-12
08902-002
cat
08902-00243-844
08902-0024A-
08902-0024A-45
08902-00243-    
无效数据:

08902-00243
08902-00243-1
08902-00243-12
08902-002
cat
08902-00243-844
08902-0024A-
08902-0024A-45
08902-00243-    
我正在尝试创建一个正则表达式来验证上述数据:

\d{5}-\d{5}-\d{2}?
然而,我无法使可选(?)工作

任何帮助都将不胜感激


谢谢。

您还需要将最后一个选项分组到可选选项中:
\d{5}-\d{5}(-\d{1,2})
在正则表达式下面尝试

^(\d{5}-\d{5}(-\d\d?)?)$

您需要包含一个
-
,并且在最后一组中有一个数字范围

echo "08902-00243-12" | egrep -o "\d{5}-\d{5}(-\d{1,2})?$"

规则是什么?用什么语言?但根据我帖子中链接的演示,它不适用于
08902-00243-844
谢谢。您能否检查08902-00243-844是否添加了一个$以指示结束range@BenWhaley然后可能还会添加
^
以保持一致性。@Braj经过严格的编辑,以说明最后允许的“-\d”,是的,一切正常。谢谢。你能查一下08902-00243吗-844@BrajOP不允许这样做,这个正则表达式也不允许这样做,因为我们在结尾使用了
\d{1,2}
。听起来不错,不客气。如果问题已解决,则接受最佳答案并关闭线程,单击绿色标记勾号。请检查此项,有一个组合应无效:08902-00245-