Регулярное выражение для соответствия 3-й позиции на основе значения первой позиции - PullRequest
0 голосов
/ 11 января 2019

В настоящее время я пытаюсь получить совпадение с учетом следующих условий в правиле проверки для Salesforce - Если номер начинается с любых цифр, кроме 2 или 9, то цифра в третьей позиции должна быть 2 - номер должен содержать ровно 9 цифр - Повторение одного и того же номера не допускается

Это код, который у меня есть, разделен на три выражения, потому что я не уверен, смогу ли я получить тот же результат только в одном выражении.

Код, который я скопировал, соответствует синтаксису, но не соответствует

OR( NOT(REGEX(Phone, "[0-9]{9}")),
REGEX(Phone, "([0-9])\\1{8}"),
REGEX(Phone, "\\b[0,1,3,4,5,6,7,8]{1}[0-9]{1}[0,1,3,4,5,6,7,8,9]{1}")
)

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Это заставит вас все принять за повторение чисел.

REGEX(Phone, "([01345678](?=\\d2)\\d{8})|([29]\\d{8})");

Некоторые объяснения регулярного выражения:

"() | ()" строка в середине означает 'ИЛИ', поэтому первые круглые скобки 'ИЛИ' вторые

(? = \ D2) - взгляд вперед

если вы объедините это с ответом, найденным здесь регулярное выражение для поиска чисел с уникальными цифрами

Вы можете сделать еще одно выражение регулярного выражения

\d{3}(?!.*(.).*\1)\d{6}$ 

таким образом, вы можете проверить и убедиться, что после первых 3 цифр нет дубликатов, поскольку выясняется, что 202345678 будет действительным числом

0 голосов
/ 12 января 2019

Я не знаю, как вы могли бы сделать это за один раз, но вы могли бы иметь 2 и соответствовать любому из них:

// If it starts with anything but a 2 or 9, 3rd digit must be a 2
[013456780][0-9]2[0-9]{6}  OR
// if it starts with a 2 or 9, rest of the digits can be anything
[29][0-9]{8}

Соответствие отдельному символу является значением по умолчанию, поэтому я пропустил {1}, так как они необязательны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...