在bash中匹配十六进制颜色代码

时间:2017-01-04 19:08:42

标签: regex bash shell unix

我看了一下,我似乎无法找到一种工作方式来验证(在正则表达式中)给定的参数是否为十六进制颜色代码。这是我的代码:

echo `expr match "$1" '\(#[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})\)'`

当我把它放入一个文件(hex.sh)时,它什么都不返回,而它应该返回代码本身。我错了或代码应该是什么?

1 个答案:

答案 0 :(得分:1)

  

expr匹配“$ string”'($ regexp)'

花括号{}“管道”字符|以及常规括号()应在$regexp参数内进行转义。
使用以下调整:

#!/bin/bash/
echo `expr match "$1" '\(#[A-Fa-f0-9]\{6\}\|#[A-Fa-f0-9]\{3\}\)'`

测试输出:

$ sh hex.sh "#542541"
#542541