2012-03-16 69 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');