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/