0

I'm working on a validation that would require a user to enter only numbers that have to be exactly 9 numbers and be separated by lines. The below is working for that, but is it possible with straight RegEx to add criteria prevent a duplicate of any number set?

!REGEX(SomeCustomField__c, '^[0-9]{9}+(\r\n[0-9]{9}+)*$')

If there way you can prevent a number from appearing twice without Apex?

123456789
123456780
// Prevent duplicate of any number already entered
123456789
123456780

1 Answer 1

3

Yes, regex can do this.

NOT(REGEX(SomeCustomField__c, '^(?s)\\d{9}(\\s+\\d{9})$')) ||
REGEX(SomeCustomField__c, '(?s)(\\d{9}).*\\1')

The trick here is that we go in to "single line mode" (?s) to allow . to match newlines, then we check each nine-digit string (\\d{9}) with any intervening characters (.*), followed by the same group again (\\1).

3
  • I should have thought of using an AND expression. Having a bit of an issue as it doesn't seem to work in the same validation rule from what I can see. If I separate them into different validation rules it works as intended. Let me double-check a few things.
    – Andrew L.
    Feb 6, 2021 at 19:38
  • @AndrewL. I actually meant OR. Silly mistake, really.
    – sfdcfox
    Feb 6, 2021 at 20:29
  • No problem. It gave me an opportunity to work with REGEX and validation. Thanks again.
    – Andrew L.
    Feb 6, 2021 at 20:34

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .