2012-03-16 65 views
10

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

在此先感谢!

+0

你知道至少要认为哪些字符有效吗? – 2012-03-16 18:56:03

+0

@BogdanEmilMariesan我不明白你的问题。字符对于不同的对象记录是不同的,这就是为什么它不是我认为的直接正则表达式。 – Anup 2012-03-16 19:24:12

回答

16

像这样的东西应该工作:

[a-zA-Z0-9]{15,18} 

有人提出,这可能是比较正确的,因为它可以防止IDS与16的长度和17个字符被拒绝,我们也试图匹配18字符长度先用15长度作为后备:

[a-zA-Z0-9]{18}|[a-zA-Z0-9]{15} 
+0

这很粗糙,但我喜欢。 :) 谢谢!我已经+1了你的答案。 – Anup 2012-03-16 20:16:24

+2

更紧凑的方式来说这将是'\ w {15,18}' – Technetium 2012-03-21 22:43:19

+0

在大多数正则表达式实现中,'\ w'将包含'_',所以上述不正确。 – haridsv 2014-01-30 05:35:33

9

我碰到过的最简单的方法,是创建一个新的ID变量和一个字符串分配给它。

ID MyTestID = null; 
try { 
    MyTestID = MyTestString; } 
catch(Exception ex) { } 

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

+0

是的,我在salesforce开发者论坛上看到过这个解决方案,但是想知道是否有更好的方法来验证salesforce id。虽然谢谢! – Anup 2012-03-16 19:23:05

+0

不客气,如果你想用正则表达式来验证它,Jeremy Ross的解决方案应该很好。 – 2012-03-16 19:52:26

+0

这很漂亮!简单,但它工作得非常好。 – VictorKilo 2012-03-18 09:55:22

16

有确认销售人员的ID两个层次:

  1. 检查格式使用正则表达式[a-zA-Z0-9]{15}|[a-zA-Z0-9]{18}
  2. 18-characted IDS可以检查的3-character checksumenter image description here
+1

这是最准确和最有帮助的答案。谢谢。 – aaronbauman 2015-11-24 14:58:16

+1

我根据上面的信息创建了一个要点,它检查(总结)。我会看到自己。 https://gist.github.com/jeriley/36b29f7c46527af4532aaf092c90dd56 – jeriley 2017-02-28 16:58:27

1

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

String s = '1234'; 
if (s instanceOf Id) System.debug('valid id'); 
else System.debug('invalid id');