【发布时间】:2016-05-20 22:46:27
【问题描述】:
我正在编写一个需要颜色处理的应用程序,我想知道用户何时输入了有效的十六进制值。这包括“#ffffff”和“#fff”,但不包括介于两者之间的,如 4 或 5 Fs。我的问题是,我可以编写一个正则表达式来确定一个字符是否存在一定次数或另一个确切的次数?
我尝试的是改变:
/#(\d|\w){3}{6}/
正则表达式:
/#(\d|\w){3|6}/
显然这不起作用。我意识到我可以写:
/(#(\d|\w){3})|(#(\d|\w){6})/
不过我希望有更好看的东西。
【问题讨论】:
-
(\d|\w)将匹配很多不是有效的十六进制数字的字符。试试[\da-f](或[\dA-Fa-f])。 -
请注意,anubhava 和 biffen 的建议是不可扩展的。您使用
/(#(\d|\w){3})|(#(\d|\w){6})/的交替(正则表达式不好,但想法是正确的)是。 -
@WiktorStribiżew 你能详细说明一下吗?
-
@Biffen:您不能使用您的方法来精确匹配 2 位或 5 位或 14 位。
-
@WiktorStribiżew 啊,我明白你的意思了。
标签: javascript regex hex