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,就像示例中演示的那样。
发布于 2010-10-25 02:09:43
这一点:
$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}$/";最后,请注意,从PHP5.3开始,ereg已被弃用。这段代码显示了使用preg_match的php/正则表达式
<?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";
}
}
?>发布于 2010-10-25 02:14:13
如果最小长度是17,最大长度是18,那么你们看错了。这将为您做好这项工作:
$regex = "/^STEAM_0:(0|1):[0-9]{7}[0-9]?$/";此外,如果有疑问,可以使用一些在线正则表达式工具(如http://www.regexplanet.com/simple/index.html )测试您的正则表达式
发布于 2010-10-25 02:16:20
试试这个:
$regex = "/^STEAM_0:(0|1):[0-9]{8,9}$/";它匹配:
开头为
STEAM_0:,然后是0或1,然后是:,然后是https://stackoverflow.com/questions/4009593
复制相似问题