+

开发语言中需要用到的数据验证

一些常用的数据验证

Posted by Coozw on 2022-08-30
Words 1.1k and Reading Time 4 Minutes
Viewed Times

区块链登录签名验证

Vue端

验证区块链地址

    let validateAddress = (rule, value, callback) => {
  const regex = /^(0x[0-9a-fA-F]{40})$/;
  if (value === "" || !regex.test(value)) {
    callback(new Error(this.$t("manageWallet.addressenteredisinvalid")));
  } else {
    callback();
  }
};

验证区块链私钥

1
2
3
4
5
6
7
8
let validatePrivateKey = (rule, value, callback) => {
const regex = /^(0x[0-9a-fA-F]{64})$/;
if (value === "" || !regex.test(value)) {
callback(new Error(this.$t("manageWallet.addressenteredisinvalid")));
} else {
callback();
}
};

验证姓名

1
2
3
4
5
6
7
8
var str = value.substr(0, 1); //截取用户提交的用户名的前两字节,也就是姓。
var surname = " 赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤 滕殷罗毕郝邬安常乐于时傅皮卞齐康伍余元卜顾孟平黄和穆萧尹姚邵堪汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董粱杜阮蓝闵席季麻强贾路娄危江童颜郭 梅盛林刁钟徐邱骆高夏蔡田樊胡凌霍虞万支柯咎管卢莫经房裘缪干解应宗宣丁贲邓郁单杭洪包诸左石崔吉钮龚程嵇邢滑裴陆荣翁荀羊於惠甄魏加封芮羿储靳汲邴糜松 井段富巫乌焦巴弓牧隗山谷车侯宓蓬全郗班仰秋仲伊宫宁仇栾暴甘钭厉戎祖武符刘姜詹束龙叶幸司韶郜黎蓟薄印宿白怀蒲台从鄂索咸籍赖卓蔺屠蒙池乔阴郁胥能苍双 闻莘党翟谭贡劳逄姬申扶堵冉宰郦雍郤璩桑桂濮牛寿通边扈燕冀郏浦尚农温别庄晏柴瞿阎充慕连茹习宦艾鱼容向古易慎戈廖庚终暨居衡步都耿满弘匡国文寇广禄阙东 殴殳沃利蔚越夔隆师巩厍聂晁勾敖融冷訾辛阚那简饶空曾毋沙乜养鞠须丰巢关蒯相查后江红游竺权逯盖益桓公万俟司马上官欧阳夏侯诸葛闻人东方赫连皇甫尉迟公羊 澹台公冶宗政濮阳淳于仲孙太叔申屠公孙乐正轩辕令狐钟离闾丘长孙慕容鲜于宇文司徒司空亓官司寇仉督子车颛孙端木巫马公西漆雕乐正壤驷公良拓拔夹谷宰父谷粱 晋楚闫法汝鄢涂钦段干百里东郭南门呼延妫海羊舌微生岳帅缑亢况後有琴梁丘左丘东门西门商牟佘佴伯赏南宫墨哈谯笪年爱阳佟第五言福";
var r = surname.search(str); // 查找字符串。
if (r == -1) {
callback(new Error("姓名输入有误,请重新输入!"));
} else {
callback();
}

验证证件号码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
  let validateIdCard = (rule, value, callback) => {

// 只能是18位

if (!value || value.length != 18) {
callback(new Error("证件号码输入有误,请重新输入!"));
}

// 取出本体码
var idcard_base = value.substr(0, 17);
// 取出校验码
var verify_code = value.substr(17, 1);
// 加权因子
var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
// 校验码对应值
var verify_code_list = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];

// 根据前17位计算校验码
var total = 0;

for (var i = 0; i < 17; i++) {
total += idcard_base.substr(i, 1) * factor[i];
}
// 取模
var mod = total % 11;
// 比较校验码

if (verify_code != verify_code_list[mod]) {
callback(new Error("证件号码输入有误,请重新输入!"));
} else {
callback();
}
};

Java端实现验签

PHP端实现验签

验证中文姓名

1
2
3
4
5
6
7
8
private function isChineseName($name)
{
if (preg_match('/^([\xe4-\xe9][\x80-\xbf]{2}){2,4}$/', $name)) {
return true;
} else {
return false;
}
}

验证身份证号码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private function isIdCard($idcard)
{
// 只能是18位
if (strlen($idcard) != 18) {
return false;
}
// 取出本体码
$idcard_base = substr($idcard, 0, 17);
// 取出校验码
$verify_code = substr($idcard, 17, 1);
// 加权因子
$factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
// 校验码对应值
$verify_code_list = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
// 根据前17位计算校验码
$total = 0;
for ($i = 0; $i < 17; $i++) {
$total += substr($idcard_base, $i, 1) * $factor[$i];
}
// 取模
$mod = $total % 11;
// 比较校验码
if ($verify_code == $verify_code_list[$mod]) {
return true;
} else {
return false;
}
}

...

...

00:00
00:00