【问题标题】:Check if input matches STEAM ID Format检查输入是否匹配 STEAM ID 格式
【发布时间】:2011-07-17 13:50:08
【问题描述】:

我知道如何匹配它,但我不知道标准,例如,电子邮件匹配器会使用:/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,但我需要知道 Steam id 会使用什么。

演示 Steam ID:STEAM_0:1:20206720

谁能给我一个 STEAM ID 的标准?

编辑: 我正在使用 pimvdb 提供的正则表达式,但它仍然回复 steam id(STEAM_0:1:20206720) 不正确。

我的代码如下:

function verifySteamID(){
    var elem = document.getElementById('item_name');
    var emailExp = /^STEAM_[0-5]:[01]:\d+$/;
    if(elem.value.match(emailExp)){
        document.getElementById("error").setAttribute("class", "hidden");
        return true;
    }else{
        document.getElementById("error").setAttribute("class", "unhidden");
        elem.focus();
        return false;
    }
    }

调用者:

<input type="submit" value="Donate" id="donatebtn" onclick="return verifySteamID()" />

【问题讨论】:

标签: javascript pattern-matching


【解决方案1】:

根据http://developer.valvesoftware.com/wiki/SteamID#Format 可能是这样的:

/^STEAM_[0-5]:[01]:\d+$/

^...$ 只是为了让确切的字符串必须匹配。

STEAM_ 是前缀。

前缀后面应该有一个从0到5的数字。

然后是 :,后跟 0 或 1。

然后是另一个:,后跟帐号。

【讨论】:

  • 它仍然回复我的 Steam id 不正确,我已经编辑了我的问题以包含 js 代码
  • @Harry: /^STEAM_[0-5]:[01]:\d+$/.test("STEAM_0:1:20206720") 给了我true
  • @Harry:您的演示 ID 有效。你在使用什么价值?也许使用/^STEAM_[0-5]:[01]:\d+$/.test(str) 是一个更好的主意。这只是返回truefalse
  • @pimvdb 我已经根据你的小提琴编辑了我的脚本,但我仍然得到一个不正确的语句,请查看我的帖子以获取我的脚本。
  • @Harry:elem.value 如果你提醒它,它是什么?
【解决方案2】:

试试这个:

var input = "STEAM_0:1:20206720"; 
var isValid = /^STEAM_\d:\d:\d+$/.test(input); //true

【讨论】:

    【解决方案3】:

    我知道这是旧的,但以下 RegEx 表达式适用于我: ^STEAM_[0-5]:[0-1]:[0-9]*$

    工作原理:

    • ^STEAM_ 检查 SteamID 开头的“STEAM_”字符串。
    • [0-5]: 查找包含 0 到 5 之间的整数,后跟“:”。
    • [0-1]: 也是如此。
    • [0-9]*$检查以下所有字符是否为 0 到 9 之间的整数。

    【讨论】:

    • 您能否编辑您的答案以解释其工作原理?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多