Regexp匹配Hex颜色语法(和缩短形式)

cl0*_*k3r 20 javascript regex

好吧,我在正则表达式上非常新,特别是在js regexp上

我正在寻找与十六进制颜色语法匹配的正则表达式(如"#34ffa6")然后我关注w3school页面:Javascript RegExp对象

那是我的正则表达式: / ^#[0-9a-f] {6}/i

它似乎工作但是,如果我想要它也匹配"短十六进制颜色语法"形式?(比如"#3fa"),这可能吗?我尝试使用caracter | 但也许我的语法错了......

Thx提前和抱歉肯定是坏英语(我是意大利人......)

rod*_*ehm 67

/^#[0-9a-f]{3,6}$/i
Run Code Online (Sandbox Code Playgroud)

将匹配#abc,#abcd,#abcde,#abcdef

/^#([0-9a-f]{3}|[0-9a-f]{6})$/i
Run Code Online (Sandbox Code Playgroud)

会匹配#abc,#abcdef但不会#abcd

/^#([0-9a-f]{3}){1,2}$/i
Run Code Online (Sandbox Code Playgroud)

会匹配#abc,#abcdef但不会#abcd

/^#(?:[0-9a-f]{3}){1,2}$/i
Run Code Online (Sandbox Code Playgroud)

会匹配#abc,#abcdef但不会#abcd

查看RegExp - MDN以了解有关javascript 中正则表达式的更多信息.

  • @ManseUK:是的,尽管在大多数情况下这种差异可以忽略不计,但是当你真正需要捕获子表达式时,让自己养成只使用捕获括号的习惯只是一种"最佳实践". (3认同)
  • 大写字母也可以,所以正则表达式应该是`/^#(?:[0-9a-fA-F]{3}){1,2}$/i` (2认同)

Man*_*eUK 7

尝试这个 :

/^#([0-9a-f]{6}|[0-9a-f]{3})$/i
Run Code Online (Sandbox Code Playgroud)

[0-9a-f]{6}= 6 个字符 [0-9a-f]{3}= 3 个字符 $= 结尾


Sak*_*tel 6

这应该有效 /#[0-9a-f]{6}|#[0-9a-f]{3}/gi

要即时尝试正则表达式并学习它,您可以使用此网站 http://gskinner.com/RegExr/