如何使用带有破折号的字母和数字的正则表达式

时间:2017-05-11 22:36:06

标签: regex unix search string-matching

所以这就是我目前在shell脚本中的内容。我在正则表达式上非常糟糕。

echo $1 | grep -E '^[A-Z]${3}|^[0-9]${4}|^[ABCD]$'

我需要这样的输入:

./dlchek.sh ACV-1319-A

这是一般格式: XYX-1111-A 其中XYX可以是任何字母,1111可以是任意数字,A必须是(A,B,C,D)。我顺便使用unix。我只需要检查格式是否正确,如果正确则退出代码0,如果不正确则退出。

这是预期的输出:第3行是唯一有效的,因为它遵循格式。

[you@blue final]$ ./dlcheck.sh ACV-13-A
[you@blue final]$ echo $?
1
[you@blue final]$ ./dlcheck.sh ACV-13119-A
[you@blue final]$ echo $?
1
[you@blue final]$ ./dlcheck.sh ACV-1319-A
[you@blue final]$ echo $?
0
[you@blue final]$ ./dlcheck.sh ACV-1319-Y
[you@blue final]$ echo $?
1

1 个答案:

答案 0 :(得分:0)

^[A-Z]{3}-[0-9]{4}-[ABCD]$

那些$$在那里做什么?结局太多了。那些管子?跟我一样,使用https://regex101.com/,你每次都会学到一些东西......