alpha组件或RGBA / HSLA的正则表达式,为什么我得到匹配的组?

时间:2014-04-05 10:53:12

标签: php regex alpha pcre rgba

^(?:(?:0(:?\.[0-9])?)|(?:1(?:\.0)?))$

应该(我不是正则表达式大师)匹配RGBA / HSLA的alpha组件(00.0 to 0.91,{ {1}})。

但是当我使用Rubular with this regex/test string时,我会得到一个匹配的1.0组,其中包含测试字符串1.,我会得到一个匹配的组1.0,其中包含测试字符串.9

我不需要捕捉群体......我做错了什么?

1 个答案:

答案 0 :(得分:2)

你正在为此获得小组:

^(?:(?:0(:?\.[0-9])?)|(?:1(?:\.0)?))$
         ^^ its a mistake i believe

应该是:

^(?:(?:0(?:\.[0-9])?)|(?:1(?:\.0)?))$
         ^^

:?表示可选冒号。所以它总是与你的输入相匹配。而?:表示忽略您已经使用的群组捕获。