php 正则表达式最小和最大数字长度

标签 php regex

if(strlen(trim($steamid)) != 0)
            {
                $regex = "/^STEAM_0:(0|1):[0-9]{1}[0-9]{0,8}$/";
                if(!ereg($regex, $ssteamid)){
                    echo "STEAM ID invalida";
                }
            }

我的问题是这没有发挥应有的作用。

STEAM ID 最多 18 个字符,最少 17 个字符。

它们总是以:STEAM_0:

两个真实的例子是:STEAM_0:0:11111111; STEAM_0:1:1111111

另一件事是,在 STEAM_0 之后:总是出现 0 或 1,如示例中所示。

最佳答案

这个:

$regex = "/^STEAM_0:(0|1):[0-9]{1}[0-9]{0,8}$/";

可以写得更短:

$regex = "/^STEAM_0:[01]:[0-9]{1,9}$/";

由于您的 ID 长度为 17 或 18 个字符,因此请调整正则表达式:

$regex = "/^STEAM_0:[01]:[0-9]{7,8}$/";

最后,请注意,从 PHP 5.3 开始,ereg 已被弃用。此代码片段显示您的 php/regex 为 preg_match :

<?php

$steamid = "STEAM_0:0:11111111";

if(strlen(trim($steamid)) != 0)
{
    $regex = "/^STEAM_0:[01]:[0-9]{7,8}$/";
    if(!preg_match($regex, $steamid))
    {
        echo "STEAM ID invalida.\n";
    } else {
        echo "STEAM ID valida.\n";
    }
}
?>

关于php 正则表达式最小和最大数字长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4009593/

相关文章:

javascript - 编辑 Wordpress 主题中的现有元素

regex - 查找缺少 0 的电话号码

c# - 在 .NET 4 中实现 RegEx 超时

java - 通过java中的正则表达式从emailId中找出域

php - 如何使用 MySQL 创建今天、明天和昨天

php - Codeigniter 事件记录帮助

php - 上传视频,使用 PHP 服务器端格式化和编码

javascript - Laravel - 使用 Ajax 从数据库中获取数据

java - Jetty RewriteHandler 和 RewriteRegexRule

php - 重新格式化字符串数组中的数字 PHP