正则表达式匹配十六进制颜色语法(和缩写形式)

新手上路,请多包涵

好吧,我对正则表达式很陌生,尤其是 JavaScript 正则表达式。

我正在寻找与十六进制颜色语法匹配的正则表达式(如 #34ffa6 )然后我查看了 w3school 页面: Javascript RegExp Object

那就是我的正则表达式:

 /^#[0-9a-f]{6}/i

它似乎有效,但是,如果我希望它也匹配“短十六进制颜色语法”形式? (比如 #3fa ),这可能吗?我试过使用字符 | 但也许我的语法有误。

原文由 cl0udw4lk3r 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 364
2 个回答
/^#[0-9a-f]{3,6}$/i

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

 /^#([0-9a-f]{3}|[0-9a-f]{6})$/i

将匹配 #abc#abcdef 但不匹配 --- #abcd

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

将匹配 #abc#abcdef 但不匹配 --- #abcd

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

将匹配 #abc#abcdef 但不匹配 --- #abcd

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

原文由 rodneyrehm 发布,翻译遵循 CC BY-SA 3.0 许可协议

尝试这个 :

 /^#([0-9a-f]{6}|[0-9a-f]{3})$/i

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

原文由 Manse 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏