验证Salesforce Id

Anu*_*nup 18 regex salesforce

有没有办法验证Salesforce ID,可能使用RegEx?它们通常是15个字符或18个字符,但它们是否遵循我们可以用来检查它是否是有效ID的模式.

提前致谢!

Jer*_*oss 25

这样的事情应该有效:

[a-zA-Z0-9]{15,18}
Run Code Online (Sandbox Code Playgroud)

有人建议这可能更正确,因为它可以防止长度为16和17个字符的ID被拒绝,我们也会尝试首先匹配18个字符长度,15个长度作为后备:

[a-zA-Z0-9]{18}|[a-zA-Z0-9]{15}
Run Code Online (Sandbox Code Playgroud)

  • 在大多数正则表达式实现中,“ \ w”将包含“ _”,因此以上内容是不正确的。 (3认同)
  • 用这句话来说,一种更紧凑的方式是`\ w {15,18}` (2认同)
  • 这仅适用于15个字符长的ID。3个字符的后缀是从前15个字符开始计算的。如果不确定18个字符长的ID是否具有正确的后缀,则最好将其切掉。相同,但是不能以不区分大小写的方式对“ 15”个ID进行排序。基本上,您可以将后缀为[[a-zA-Z0-9] {15}”或“ [a-zA-Z0-9] {18}”的任何内容作为ID传递。其他一切都会失败。 (2认同)
  • 您是否需要锚定Regex模式以防止长度大于18的字符串通过?像这样:`^([a-zA-Z0-9] {15} | [a-zA-Z0-9] {18})$` (2认同)

zac*_*usz 25

验证salesforce ID有两个级别:

  1. 使用正则表达式检查格式 [a-zA-Z0-9]{15}|[a-zA-Z0-9]{18}
  2. 对于18个查询的ID,您可以检查3个字符的校验和: 在此输入图像描述

  • 这是最精确和最有帮助的答案。谢谢。 (2认同)
  • 我根据上面的信息创建了一个要点,并检查(总结).我会看到自己.https://gist.github.com/jeriley/36b29f7c46527af4532aaf092c90dd56 (2认同)
  • 这是Go版本:https://gist.github.com/maxmcd/a32a35c0eebcfb77cd005f9dd8958815 (2认同)

Mat*_*t K 10

我遇到的最简单的方法是创建一个新的ID变量并为其分配一个String.

ID MyTestID = null;
try {
    MyTestID = MyTestString; }
catch(Exception ex) { }
Run Code Online (Sandbox Code Playgroud)

如果MyTestID在尝试分配后为空,则该ID无效.

  • 这是好习惯吗?我尽量避免尝试捕获(并不意味着我不能很好地使用它)我一直认为尝试捕获资源很重. (4认同)
  • 这是不好的做法的原因是你不应该轻率地使用try/catch.原因是Try/Catch是一个非常复杂的操作,导致您的代码在处理器上运行更多周期.当然,时间复杂度因语言和编译器而异,但我认为我们都可以安全地假设Apex的版本很可能很糟糕. (3认同)

小智 9

只需使用instanceOf检查字符串是否为Id的实例。

String s = '1234';
if (s instanceOf Id) System.debug('valid id');
else System.debug('invalid id');
Run Code Online (Sandbox Code Playgroud)


小智 5

到目前为止,这个正则表达式给了我最佳的结果。

\b[a-z0-9]\w{4}0\w{12}|[a-z0-9]\w{4}0\w{9}\b
Run Code Online (Sandbox Code Playgroud)