Я пытаюсь придумать регулярное выражение, чтобы соответствовать Bitcoin адреса в соответствии с these specs:RegEx для соответствия адресам Bitcoin?
Bitcoin адрес или просто адрес, является идентификатором 27-34 буквенно-цифровых символов, начиная с номера 1 или 3 [...]
Я полагал, что это будет выглядеть как этот
/^[13][a-zA-Z0-9]{27,34}/
Дело в том, что я не очень хорошо с регулярными expre ssions, и я не нашел ни одного источника, чтобы подтвердить это. не создавать ложные негативы.
Я нашел один в Интернете, что это ^1[1-9A-Za-z][^OIl]{20,40}
, но я даже не знаю, что [^OIl]
средства часть, и это, кажется, не соответствовать 3
Bitcoin адрес может начаться с.
Ваша ссылка страница содержит раздел «Адрес проверки». Почему бы не использовать технику, предусмотренную в ссылке там? (Цитата: "[...] рекомендуется использовать метод из [этой темы] (https://bitcointalk.org/index.php?topic=1026.0), а не просто проверять длину строки, допустимые символы или, что адрес начинается с 1 или 3 ") – phimuemue
@phimuemue Если адреса _all_ bitcoin имеют этот формат, то я не вижу причины, почему это не сработает. Кроме того, я не ищу тщательной проверки (в конце концов, это может быть действительный адрес и еще не существует), а скорее то, что отбрасывает адреса, которые явно недействительны. – federicot
@fedeetz: адреса биткойнов содержат контрольную сумму. Вы не можете проверить биткойн-адрес с помощью регулярного выражения, потому что * все * биткойн-адреса имеют эту контрольную сумму. верно, что вы regexp отбрасываете многие адреса, которые явно недействительны ... Но ваше регулярное выражение также примет безумное число недопустимых. Сама цель этой контрольной суммы ** является **, чтобы люди не могли использовать недействительные адреса, d склонны считать, что автор (ы) биткойнов очень умные люди и знали, что они делают. Выполнение «проверки» без проверки контрольной суммы, чья цель является валидацией, не имеет смысла. – TacticalCoder