如何仅拒绝正则表达式模式中的一个字符串
How can I deny only one string from a regex pattern
我正在使用正则表达式模式进行十六进制颜色验证,并在 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})$
我做错了什么?
感谢您的帮助。
您可以使用
^#(?!F{6}$)(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
当从第一个 #
到字符串末尾有 6 个 F
个字符时,(?!F{6}$)
否定先行匹配失败。
如果您只想禁止 #
、replace (?!F{6}$)
with (?!F+$)
之后的任何数字(1 个或多个)。
我正在使用正则表达式模式进行十六进制颜色验证,并在 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})$
我做错了什么?
感谢您的帮助。
您可以使用
^#(?!F{6}$)(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
当从第一个 #
到字符串末尾有 6 个 F
个字符时,(?!F{6}$)
否定先行匹配失败。
如果您只想禁止 #
、replace (?!F{6}$)
with (?!F+$)
之后的任何数字(1 个或多个)。