我如何才能拒绝正则表达式模式中的一个字符串

时间:2018-06-19 13:24:30

标签: regex hex regex-negation color-picker

我正在使用正则表达式模式进行十六进制颜色验证,并正在https://regex101.com上对其进行测试。

问题是我不希望白色- #FFFFFF 被视为有效选择。

我尝试过:

  

^#(?= [A-Fa-f0-9] {6} | [A-Fa-f0-9] {3})((?! FFFFFF)。)* $

和#FFFFFF被认为不是我想要的有效,但是现在我得到了

  

#FFFasdfsdfg

或这个

  

#F00

作为有效的十六进制颜色,不会发生具有以下模式的事情:

  

^#([A-Fa-f0-9] {6} | [A-Fa-f0-9] {3})$

我在做什么错了?

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用

^#(?!F{6}$)(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$

请参见regex demo

从第一个(?!F{6}$)到字符串末尾有6个F个字符的情况下,#负向超前失败。

如果您只想禁止#之后的任何数字(1个或多个),请replace (?!F{6}$) with (?!F+$)