【发布时间】:2022-06-11 03:29:20
【问题描述】:
我希望对 NEAR 协议帐户地址进行准确的表单字段验证。
我在https://docs.near.org/docs/concepts/account#account-id-rules 看到最小长度为 2,最大长度为 64,并且字符串必须是公钥的 64 个字符的十六进制表示形式(在隐式帐户的情况下)或必须包含“帐户 ID 部分”以 . 分隔并以 .near 结尾,其中“帐户 ID 部分”由以 _ 或 - 分隔的小写字母数字符号组成。
这里有一些例子。
这里最后4个案例应该被标记为无效(可能还有更多我不知道的案例):
example.nearsub.ex.nearsomething.near98793cd91a3f870fb126f66285808c7e094afcfc4eda8a970f6648cdf0dbd6de-
wrong.near.suffix(无效) -
shouldnotendwithperiod.near.(无效) -
space should fail.near(无效) -
touchingDotsShouldfail..near(无效)
我想知道我是否应该在验证中使用经过良好测试的正则表达式。
谢谢。
附:最初我的问题指向我从 https://regex101.com/r/jZHtDA/1 开始的内容,但鉴于必须已经有官方验证规则可以复制,因此从头开始感觉不明智。
我查看了我希望使用某种验证的代码,例如这些链接,但我还没有找到它:
- https://github.com/near/near-wallet/blob/40512df4d14366e1b8e05152fbf5a898812ebd2b/packages/frontend/src/utils/account.js#L8
- https://github.com/near/near-wallet/blob/40512df4d14366e1b8e05152fbf5a898812ebd2b/packages/frontend/src/components/accounts/AccountFormAccountId.js#L95
- https://github.com/near/near-cli/blob/cdc571b1625a26bcc39b3d8db68a2f82b91f06ea/commands/create-account.js#L75
【问题讨论】:
-
不清楚哪些匹配应该是无效的以及为什么
-
平台规范中有一个正则表达式可能有助于
^(([a-z\d]+[\-_])*[a-z\d]+\.)*([a-z\d]+[\-_])*[a-z\d]+$在这里找到nomicon.io/DataStructures/Account
标签: regex nearprotocol near