Подтвердить что ты не робот

Регулярное выражение для проверки поля адреса

Я пытаюсь написать регулярное выражение, которое облегчает адрес, пример 21 - большой путь или 21 диск с сетью Елизаветы. Я придумал следующее регулярное выражение, но я не слишком заинтересован в том, как включать все символы ( буквенно-цифровой, пробел, полная остановка, апостроф)

"regexp=^[A-Za-z-0-99999999'
4b9b3361

Ответ 1

ДАМ,

См. ответ на этот вопрос по проверке адреса с помощью регулярного выражения: соответствие адреса улиц регулярного выражения

Проблема заключается в том, что уличные адреса сильно различаются в форматировании, которые трудно сопоставить с ними. Если вы пытаетесь проверить адреса, найти, если один из них недействителен в зависимости от его формата, очень сложно сделать. Это вернет следующий адрес (253 N. Cherry St.), что угодно в том же формате:

\d{1,5}\s\w.\s(\b\w*\b\s){1,2}\w*\.

Это позволяет 1-5 цифр номера дома, пробела, символа, за которым следует период (для N. или S.), 1-2 слова для названия улицы, заканчивается аббревиатурой (например, st. или й.).

Поскольку регулярное выражение используется, чтобы увидеть, соответствуют ли вещи стандарту или протоколу (который вы определяете), вы, вероятно, не захотите разрешать адреса, указанные выше, особенно первый с тире, поскольку они не очень стандарт. вы можете изменить мой код выше, чтобы разрешить их, если хотите - вы могли бы добавить

(-?)

чтобы разрешить тире, но не требуется.

Кроме того, http://rubular.com/ - быстрый и интерактивный способ изучения регулярного выражения. Попробуйте с адресами выше.

Ответ 2

Если у вас нет фиксированного формата для адреса, как указано выше, я бы использовал выражение регулярного выражения только для устранения символов, которые не используются в адресе (например, специализированные sybmols - & (% # $^ ) Результат:

[A-Za-z0-9'\.\-\s\,]

Ответ 3

Просто добавьте в ответ Serzas '(так как у вас недостаточно отзывов для комментариев). алфавиты и числа могут быть эффективно заменены на \w для слов. Кроме того, апостроф, запятая, период и дефис не обязательно должны иметь обратную косую черту. Мое требование также касалось передних и задних косых черт, так что \/и, наконец, пробелы с \s. Рабочее регулярное выражение для меня, как таковое:

pattern: "[\w',-\\/.\s]"

Ответ 4

Я успешно использовал

Dim regexString = New stringbuilder
    With regexString
       .Append("(?<h>^[\d]+[ ])(?<s>.+$)|")                'find the 2013 1st ambonstreet 
       .Append("(?<s>^.*?)(?<h>[ ][\d]+[ ])(?<e>[\D]+$)|") 'find the 1-7-4 Dual Ampstreet 130 A
       .Append("(?<s>^[\D]+[ ])(?<h>[\d]+)(?<e>.*?$)|")    'find the Terheydenlaan 320 B3 
       .Append("(?<s>^.*?)(?<h>\d*?$)")                    'find the 245e oosterkade 9
    End With

    Dim Address As Match = Regex.Match(DataRow("customerAddressLine1"), regexString.ToString(), RegexOptions.Multiline)

    If Not String.IsNullOrEmpty(Address.Groups("s").Value) Then StreetName = Address.Groups("s").Value
    If Not String.IsNullOrEmpty(Address.Groups("h").Value) Then HouseNumber = Address.Groups("h").Value
    If Not String.IsNullOrEmpty(Address.Groups("e").Value) Then Extension = Address.Groups("e").Value

Регулярное выражение попытается найти результат, если его нет, он перейдет к следующей альтернативе. Если результат не найден, ни один из 4 форматов, которые присутствуют.

Ответ 5

Regex - очень плохой выбор для такого рода задач. Попробуйте найти веб-службу или адресную базу данных или продукт, который может очищать адресные данные.

по теме:

Ответ 6

Регулярное выражение для простой проверки адреса

^[#.0-9a-zA-Z\s,-]+$

например. для случая сопоставления адресов

#1, North Street, Chennai - 11 

например. для адреса не соответствует случаю

$1, North Street, Chennai @ 11