如何识别给定的string是hex颜色格式
我正在寻找一个正则expression式来validation在ASP.NET C#和hex颜色
我也在寻找代码在服务器端进行validation。
例如: #CCCCCC
^#(?:[0-9a-fA-F]{3}){1,2}$
解剖:
^ anchor for start of string # the literal # ( start of group ?: indicate a non-capturing group that doesn't generate backreferences [0-9a-fA-F] hexadecimal digit {3} three times ) end of group {1,2} repeat either once or twice $ anchor for end of string
这将匹配可以在CSS中使用的任意hex颜色值,如#91bf4a
或#f13
。
注意:不支持RGBAhex颜色值。
对另一个解决scheme稍有不同意见。 我会说
^#(([0-9a-fA-F]{2}){3}|([0-9a-fA-F]){3})$
原因是这(正确)捕获了各个RGB组件。 另一个expression式#112233分三部分,'#'112 233.语法实际上是'#'(RR GG BB)| (RGB)
略有缺点是需要更多的回溯。 parsing#CCC时,你不知道第二个C是绿色的组件,直到你击中string的末尾; 当parsing#CCCCCC时,你不知道第二个C仍然是红色组件的一部分,直到你看到第4个C
这如果你想接受命名的颜色和rgb(a,b,c)。 最后的“我”是不区分大小写的。
HTML颜色 (#123,rgb不被接受)
/^(#[a-f0-9]{6}|black|green|silver|gray|olive|white|yellow|maroon|navy|red|blue|purple|teal|fuchsia|aqua)$/i
CSS颜色 (#123,rgb接受)
/^(#[a-f0-9]{6}|#[a-f0-9]{3}|rgb *\( *[0-9]{1,3}%? *, *[0-9]{1,3}%? *, *[0-9]{1,3}%? *\)|rgba *\( *[0-9]{1,3}%? *, *[0-9]{1,3}%? *, *[0-9]{1,3}%? *, *[0-9]{1,3}%? *\)|black|green|silver|gray|olive|white|yellow|maroon|navy|red|blue|purple|teal|fuchsia|aqua)$/i
基于MSalters的答案,但防止不正确的匹配,下面的作品
^#(([0-9a-fA-F]{2}){3}|([0-9a-fA-F]){3})$
或者为一个可选的哈希#
符号:
^#?(([0-9a-fA-F]{2}){3}|([0-9a-fA-F]){3})$
并且没有生成后备引用:
^#?(?:(?:[0-9a-fA-F]{2}){3}|(?:[0-9a-fA-F]){3})$