【问题标题】:Regular expression for RGBA value in phpphp中RGBA值的正则表达式
【发布时间】:2018-01-17 05:38:12
【问题描述】:

这是我在 PHP 中的 RGBA 值的正则表达式。 它应该接受百分比模式和非百分比模式。

function isValidColor_RGBA($color){


$pattern = "rgba\(
         ((\d{1,2}|1\d\d|2([0-4]\d|5[0-5]))\s*,\s*){2}
         ((\d{1,2}|1\d\d|2([0-4]\d|5[0-5]))\s*)
         (,\s*(0\.\d+|1))
         \)
        |rgba\(((\d|[1-9]\d|100)%\,\s?){3}(0|0?\.\d+|1|1\.0+)\)";



return (preg_match("<$pattern>", $color) == 1)? true : false;
}

这适用于这个 JS 测试器: https://regex101.com/r/A2IjNO/4 但在php中不起作用。 这有什么问题? 提前致谢。

【问题讨论】:

  • 在你使用的地方添加你的代码

标签: javascript php regex rgba


【解决方案1】:

您可以尝试删除新行和不需要的空格吗?

我在www.regex101.com中尝试了以下表达式

^(#[\da-f]{3}|#[\da-f]{6}|rgba(((\d{1,2}|1\d\d|2([0- 4]\d|5[0-5]))\s*,\s*){2} ((\d{1,2}|1\d\d|2([0-4]\d| 5[0-5]))\s*)(,\s*(0.\d+|1)))|hsla(\s*((\d{1,2}|[1-2]\d {2}|3([0-5]\d|60)))\s*,\s*((\d{1,2}|100)\s*%)\s*,\s*( (\d{1,2}|100)\s*%)(,\s*(0.\d+|1)))|rgb(((\d{1,2}|1\d\d| 2([0-4]\d|5[0-5]))\s*,\s*){2}((\d{1,2}|1\d\d|2([0- 4]\d|5[0-5]))\s*)|hsl(\s*((\d{1,2}|[1-2]\d{2}|3([0-5 ]\d|60)))\s*,\s*((\d{1,2}|100)\s*%)\s*,\s*((\d{1,2}|100 )\s*%)))$

新行和空格似乎对 PHP 正则表达式验证造成了问题。该表达式适用于 jsPHP

我在enter link description here中尝试了以下代码

$pattern = '/^(\#[\da-f]{3}|\#[\da-f]{6}|rgba\(((\d{1,2}|1\d\d|2([0-4]\d|5[0-5]))\s*,\s*){2} ((\d{1,2}|1\d\d|2([0-4]\d|5[0-5]))\s*)(,\s*(0\.\d+|1))\)|hsla\(\s*((\d{1,2}|[1-2]\d{2}|3([0-5]\d|60)))\s*,\s*((\d{1,2}|100)\s*%)\s*,\s*((\d{1,2}|100)\s*%)(,\s*(0\.\d+|1))\)|rgb\(((\d{1,2}|1\d\d|2([0-4]\d|5[0-5]))\s*,\s*){2}((\d{1,2}|1\d\d|2([0-4]\d|5[0-5]))\s*)|hsl\(\s*((\d{1,2}|[1-2]\d{2}|3([0-5]\d|60)))\s*,\s*((\d{1,2}|100)\s*%)\s*,\s*((\d{1,2}|100)\s*%)\))$/';
$color = 'rgba(222, 222, 222, 0.5)';
var_dump(preg_match($pattern, $color));

请记住,您需要添加空格。因为,您在逗号符号之前/之后添加了\s

【讨论】:

    猜你喜欢
    • 2017-10-21
    • 2017-09-28
    • 2011-11-24
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 2011-08-23
    相关资源
    最近更新 更多