Php 检测Str中的透明度值
如何使用正则表达式检查字符串是否为有效的透明度值(例如Php 检测Str中的透明度值,php,regex,string,Php,Regex,String,如何使用正则表达式检查字符串是否为有效的透明度值(例如1.0或0.01)?我尝试了几种方法,但它们并不匹配 有效范围:[0-1].[01-99] (?是我目前正在尝试的: <?php $vals = array('1.0','0.3','0.04','10.2','2,2','0.8'); foreach ( $vals as $v ): echo (rgbv($v)) ? $v.' is valid<br />' : $v.' is NOT valid<b
1.0
或0.01
)?我尝试了几种方法,但它们并不匹配
有效范围:[0-1].[01-99]
(?是我目前正在尝试的:
<?php
$vals = array('1.0','0.3','0.04','10.2','2,2','0.8');
foreach ( $vals as $v ):
echo (rgbv($v)) ? $v.' is valid<br />' : $v.' is NOT valid<br />';
endforeach;
function rgbv($str) {
return preg_match('([0-1].\d+)', $str);
}
?>
产出:
1.0 is valid
0.3 is valid
0.04 is valid
10.2 is valid <-- Should be invalid
2,2 is NOT valid
0.8 is valid
1.0是有效的
0.3是有效的
0.04是有效的
10.2有效您可以尝试此正则表达式
^(?!.*\.00$|0\.0$)[01]\.\d{1,2}$
这个:
~^(?:0 | 1)\[0-9]{1,2}$~
其中~
是regex delimeter而不是'([0-1]。\d+)
请尝试
'/^(0\.\d{1,2}|1\.0{1,2})$/'
…,它使用您原来的代码成功地进行了测试
<?php
$vals = array('1.0','0.3','0.04','10.2','2,2','0.8');
foreach ( $vals as $v ):
echo (rgbv($v)) ? $v.' is valid<br />' : $v.' is NOT valid<br />';
endforeach;
function rgbv($str) {
return preg_match('/^(0\.\d{1,2}|1\.0{1,2})$/', $str);
}
?>
你可以
请注意,它看起来像是在测试。因此,小数点后最多两位数字?是否需要小数点?1.00是最高值?您可以尝试以下操作:
(?:^|[^\d.])(0(?:\.\d{0,2})?|1(?:\.0{0,2})?)(?=([^\d.]|$))
唯一的困难是透明度值后面跟一个句号(如结束一句话)。此正则表达式将接受以下任何值:
0.00
1.00
0.02
0.04
0.
0
1.
1.0
以下内容将被拒绝:
2.0
1.01
.输入错误。我的意思是有效。是的,我真的不知道。这行吗?([0-1]。\d+)使用全局标记setgast,但不完全1.0有效0.3有效0.04有效10.2有效2,2无效0.8有效
发布示例代码。非常清楚,它看起来像是您正在检查的。此正则表达式将失败,因为1.99
在它不是有效值时将有效。这是一个问题。嗯,这似乎是一个问题诀窍。是的,它们是一个不透明度值,但至少不是CSS固有的。RGB和RGBA可以在几种语言中看到。是的,类似的不透明度值肯定会出现在其他上下文中。例如,我在Inkscape中就喜欢它们。:)我只是猜测CSS是这里的特定上下文。很高兴你现在有了适合你需要的东西!谢谢。我建议这样做:“/(0(?:\.\d+)?\1241(?:\.0+)$/”
,因为0
,1
,0.000000
和1.00000000
都是有效的值。是的,这对于游戏来说是有效的,但对于CSS来说也是有效的,我可以限制RGB输入xD
2.0
1.01