Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检测Str中的透明度值_Php_Regex_String - Fatal编程技术网

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