我很难让这个十六进制RGB验证通过测试:
validates_format_of :primary_color, with: /#?([A-F0-9]{6}|[A-F0-9]{3})/i
我正在测试以下值:
所有测试都有效,除了" 123ADG"。它似乎通过了验证(意味着HEX值无效且应该失败,但它会通过)。
我也试过这种正则表达式的变种,但无济于事:
validates_format_of :primary_color, with: /#?([A-F0-9]{3}){1,2}/i
有什么建议吗?
答案 0 :(得分:6)
将anchors与您的模式一起使用......
function getURL() {
if(!validate()) return; // Blocks execution if validation fails.
alert("url:" + url);
}
答案 1 :(得分:1)
您可以使用Ruby \h
字符类:
/\A#(?:\h{3}){1,2}\z/
其中细分如下:
A# should starts with #
(
?: non-capturing group
\h a hexdigit character ([0-9a-fA-F])
{3} three times
)
{1,2} repeat either once or twice
因此\h
不需要/i
修饰符,因此也不需要小写的\z