正则表达式 - 匹配类型 3 或 6

GMc*_*ris 2 javascript regex hex

我正在编写一个需要颜色操作的应用程序,我想知道用户何时输入了有效的十六进制值。这包括“#ffffff”和“#fff”,但不包括介于两者之间的字符,例如 4 或 5 F。我的问题是,我可以编写一个正则表达式来确定某个字符是否出现一定次数或另一个确切次数?

我尝试的是改变:

/#(\d|\w){3}{6}/
Run Code Online (Sandbox Code Playgroud)

正则表达式对此:

/#(\d|\w){3|6}/
Run Code Online (Sandbox Code Playgroud)

显然这不起作用。我意识到我可以写:

/(#(\d|\w){3})|(#(\d|\w){6})/
Run Code Online (Sandbox Code Playgroud)

不过,我希望有一些看起来更好的东西。

Bif*_*fen 7

我能想出的最短的:

/#([\da-f]{3}){1,2}/i
Run Code Online (Sandbox Code Playgroud)

#后面跟着一组或两组三个十六进制数字。