我正在寻找代码,以验证html颜色代码。想检查用户是否输入了有效的颜色代码,你能帮上忙吗?
我知道我需要正则表达式的东西,但是我不能理解关于正则表达式的东西:
谢谢
发布于 2010-05-12 14:21:13
您可以像这样匹配十六进制颜色:
if (/^#[0-9a-f]{3}([0-9a-f]{3})?$/i.test(str)) {
//Match
}
请注意,这不会处理名称或rgb(n, n, n)
。
您可以像这样匹配rgb(x, y, z)
颜色:
if (/^rgb\s*(\s*[012]?[0-9]{1,2}\s*,\s*[012]?[0-9]{1,2}\s*,\s*[012]?[0-9]{1,2}\s*)$/i.test(str)) {
//Match
}
请注意,这将与rgb(299, 299, 299)
匹配。
发布于 2015-02-10 20:13:12
您可以创建一个抽象元素,并尝试将颜色应用于该元素:
function validate_color(c) {
var litmus = 'red';
var d = document.createElement('div');
d.style.color=litmus;
d.style.color=c;
//Element's style.color will be reverted to litmus or set to '' if an invalid color is given
if( c !== litmus && (d.style.color === litmus || d.style.color === '')){
return false;
}
return true;
}
发布于 2020-04-09 21:21:52
现在是2020年,所以我为此创建了一个 npm
包: https://www.npmjs.com/package/validate-color
它通过name
、hex
、rgb
、rgba
、hsl
或hsla
值来验证HTML颜色。
import validateColor from 'validate-color';
用法:
import React from 'react';
import validateColor from 'validate-color';
const ColorBox = props => {
const {
color = '',
text = ''
} = props;
const theColor = color && validateColor(color) ? color : 'transparent';
return (
<div className="color-box" style={{backgroundColor: theColor}}>
<p>{text}</p>
</div>
)
};
export default ColorBox;
没有name
,
hex
、rgb
、rgba
、hsl
、hsla
) import { validateHTMLColor } from 'validate-color';
仅验证颜色hex
的
import { validateHTMLColorHex } from 'validate-color';
仅验证颜色name
的
import { validateHTMLColorName } from 'validate-color';
还有一个演示页面,展示了应用于React组件的验证:
https://dreamyguy.github.io/validate-color/
在那里,您将找到指向GitHub代码库的链接。为了更好地衡量,已经编写了大量的测试。我接受拉取请求,开源万岁!
https://stackoverflow.com/questions/2819619
复制相似问题