Проверка адресов Bitcoin на сайте - нужная часть, когда используется приём и отправка Bitcoin на сайте. Валидация адреса Bitcoin полезна в формах в любом случае, будь то свой кошелёк на сервере или подключенный сервис.
Валидация адреса Bitcoin на JSaddress = address.trim(); //выбросить пробелы и концы строки в начале и конце
Проверка на пустоту. Технически можно обойтись и проверкой длинны, но если показывать пользователю в чём ошибка - пустоту тоже стоит проверять.
if(address.length==0){
console.log('адрес пуст'); //адрес пуст
return false;
}
Проверка на короткость. Минимальная длина адреса - от 26 символов.
if(address.length<26){
console.log('адрес слишком короткий (меньше 26 символов)');
return false;
}
Проверка на длинность. Максимальная длина адреса - до 35 символов.
if(address.length>35){
console.log('адрес слишком длинный (больше 35 символов)');
return false;
}
Проверка допустимых символов: только латинские буквы (заглавные и прописные) и цифры. Пусть пока ещё может состоять только из цифр и только из букв, следующим шагом проверим префикс.
var addressRegExp = /[^a-zA-Z0-9]+/g;
if(addressRegExp.test(address)){
console.log('в адресе не только заглавные и прописные латинские буквы и цифры');
return false;
}
Из таблицы префиксов адресов известно, что адреса начинаются на
1,
3 или
bc1. Таким образом, проверяем в начале строки.
var prefixRegExp = /^[^1|3|bc1]/;
if(prefixRegExp.test(address)){
console.log('адрес начинается не с префикса (1 или 3 или bc1)');
return false;
}
Валидация размера платежа Bitcoin на JSamount = amount.trim(); //выбросить пробелы и концы строки в начале и конце
amount = amount.replace(/,/gi, '.'); //сменить запятые на точки для унификации
Если размер платежа не заполнен, длина строки нулевая.
if(amount.length==0){
console.log('размер платежа пуст'); //размер платежа пуст
return false;
}
Если размер платежа не цифра, невозможно проводить с ней тупую математическую операцию (это гораздо проще нагромождения регулярного выражения)
if(!(amount == +amount)){
console.log('размер платежа это не цифра'); //размер платежа это не цифра
return false;
}
Если после точки в размере платежа 9 или более цифр, дробная часть слишком длинная (сатоши это до 8 цифр после точки)
if(/\.\d{9,}/.test(amount)){
console.log('размер платежа имеет больше 8 цифр после точки (9 или больше)'); //размер платежа имеет больше 8 цифр после точки (9 или больше)
return false;
}
Валидация адреса и размера платежа на PHP - да теми же ругулярками. На сервере может быть Python, или C#, или другой язык, поэтому я решил опубликовать универсальный браузерный вариант. Позже добавлю аналогичную валидацию на PHP.
P.S: мой адресок для донатов
3Hq7X9CosVftRFPqWis1Dkk5MdtM1u6jj9
Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
|