Обычно вы можете просто использовать -?
. В качестве альтернативы вы можете использовать -{0,1}
, но вы должны обнаружить, что ?
для "ноль или одно вхождение" поддерживается практически везде.
pax> echo 19740103-0379 | egrep '19740103\-?0379'
19740103-0379
pax> echo 197401030379 | egrep '19740103\-?0379'
197401030379
Если вы хотите принять 12 цифр с любым количеством штрихов, вам, возможно, придется сделать что-то вроде:
-*([0-9]-*){12}
, что в основном равно нулю или более тире, за которыми следуют 12 вхождений (цифра, за которой следует ноль или более тире), и захватит все виды замечательных вещей, таких как:
--3-53453---34-4534---
(конечно, вы должны использовать \d
вместо [0-9]
, если ваш движок регулярных выражений поддерживает это).