[SalesForce] Validation Rule for Phone Number that should only contain numbers and +

I'm trying to create a validation rule for Phone Numbers. Say, I have three Phone Number fields that should be checked if the values meet the following requirements:

  1. phone numbers should be 10-12 digits in length
  2. only numbers are accepted
  3. "+" symbol in the beginning of the number is still acceptable

I came up with a rule using REGEX but it only accepts numbers that start with +. Clearly not the requirement since putting + in the beginning is just optional.

This is my rule so far:

NOT( 
AND( 
OR( 
LEN(Phone) = 0, 
REGEX(Phone, "\\+[0-9 ]+") 
), 
OR( 
LEN(MobilePhone) = 0, 
REGEX(MobilePhone, "\\+[0-9 ]+") 
), 
OR( 
LEN(OtherPhone) = 0, 
REGEX(OtherPhone, "\\+[0-9 ]+") 
) 
) 
)

I'm hoping if you can spare some time to help me with my validation rule. I'm still new to Salesforce so I'm still figuring things out. Thank you.

Best Answer

There is already another answer with shorter solution but I still wanted to answer. Below validation rule should work for your situation, too.

OR( 
OR( 
LEN( Phone ) <= 9 , 
LEN( Phone ) >= 13 
), 
NOT( 
OR( 
REGEX(Phone, "[0-9 ]+"), 
REGEX(Phone, "\\+[0-9 ]+")) 
) 
)