2011-08-03 2 views
0

Я понимаю, что сделать регулярное выражение для всех номеров внутри страны бесполезно. Таким образом, в качестве компромисса мне нужно регулярное выражение, которое будет проверять, что строка начинается с международным кодом набора номера, например:Регулярное выражение для префикса набора, например +44 и т. Д.

(+44) или (+33) и т.д.

Я не понимаю, как написать регулярное выражение, только каким поэтому любая помощь была бы весьма признательна.

P.s. Он предназначен для использования в проекте C# .net.

Спасибо.

ответ

4

Попробуйте

var regex=new Regex(@"^\(\+\d{1,4}\)"); 

Я использую @ немного перед строкой, поэтому вам не нужно двойной побег \

Это

^ Match Начало строки

\( Матч (

\+ Совпадение +

\d{1,4} Match 1-4 цифры

\) Match скобка

Кроме того, как вы используете C# вы можете рассмотреть вопрос об использовании Expresso, как это поможет вам создавать и тестировать регулярные выражения, направленные на .Net Библиотека регулярных выражений и даже может генерировать код C# для использования вами.

+1

U.S. имеет код страны 1, а Россия - 7. Имеются также трех- и четырехзначные коды стран. –

+1

Теперь исправлено для этого –

+1

Последняя скобка в настоящее время не имеет обратной косой черты. –

0

Это сложный вопрос, поскольку номер телефона не должен быть отформатирован, поэтому он может иметь цифру сразу после кода страны. Поскольку эти коды могут иметь разную длину, вам понадобится список кодов стран для проверки. Америка и Россия имеют соответственно 1 и 7, большинство европейских стран и более крупные другие страны имеют двухзначный код, но есть также коды с 3 цифрами (не более, я считаю). Таким образом, вам потребуется список из 1 и 2 цифр, по крайней мере, и может принимать 3 цифры, если ваш номер телефона не начинается с какого-либо кода в этом списке.

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

Смежные вопросы