<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>判断是否是合法的QQ号</title>
<style>
h1 {
text-align: center;
}
.box {
box-sizing: border-box;
margin: auto;
padding: 50px;
width: 440px;
border-radius: 10px;
border: 1px solid gray;
text-align: center;
}
.box input[type="text"],
input[type="password"] {
margin: 10px 0px;
padding-left: 10px;
width: 300px;
line-height: 50px;
font-size: 24px;
border: 1px solid gray;
}
.box button {
margin: 20px 0px;
padding-left: 10px;
width: 153px;
line-height: 40px;
font-size: 18px;
border: 1px solid gray;
}
</style>
</head>
<body>
<h1>判断是否是合法的QQ号</h1>
<hr>
<section class="box">
<input type="text" name="txt" maxlength="10" id="txt">
<input type="password" name="pwd" id="pwd">
<button id="zhc">注 册</button>
<button id="btn">登 录</button>
</section>
<script>
{
//用正则判断
let isQQ1 = (QQ) => {
return(/^[1-9]\d{4,9}$/.test(String(QQ))) ? true : false;
};
//用原生JS判断
let isQQ2 = (QQ) => {
let ret = false;
switch (true) {
// 1. 不能是空的
case !QQ || '' == QQ:
alert('QQ号不能为空!');
break;
// 2. 只能输入5-10
case 5 > QQ.length || 10 < QQ.length:
alert('请输入5到10位数字!');
break;
// 3. 不能以0开始
case QQ.startsWith('0', 0) || '0' == QQ[0]:
alert('不能以0开始!');
break;
// 4. 必须是一个合法的整数(注:!= 会隐士类型转换 !== 不会转换类型 类型不一样 直接返回不相等)
case isNaN(QQ) || QQ !== String(parseInt(QQ)): //isNaN(QQ) 判断是否是合法数字,true代表不合法, String(parseInt(QQ)) //QQ本身有小数.0 的情况(将原来的值取整,并转为字符类型后 和原来的值不相等时)
alert('请输入一个合法的整数!');
break;
default:
alert('OK是合法的QQ号 - 验证通过!');
ret = true;
break;
};
return ret;
};
let txt = document.querySelector('#txt');
let pwd = document.querySelector('#pwd');
let btn = document.querySelector('#btn');
btn['onclick'] = () => {
let QQ = txt.value;
console.log(QQ, parseInt(QQ), String(parseInt(QQ)));
//console.log(isQQ1(QQ));
console.log(isQQ2(QQ));
};
};
// jQuery 货币符、千分位的格式化
jquery $.extend({
/**
* 添加货币符、千分位将(数值四舍五入后格式化.)
*
* @param num 数值(Number或者String)
* @param cent 要保留的小数位(Number)
* @param isThousand 是否需要千分位 0:不需要,1:需要(数值类型);
* @return 格式的字符串,如'1,234,567.45'
* @type String
*/
addCommafy: function (num = 0, cent = 2, isThousand = 1) {
num = num.toString().replace(/\$|\,/g, '');
if (isNaN(num)) num = '0';// 检查传入数值为数值类型
let sign = (num == (num = Math.abs(num)));// 获取符号(正/负数)
num = Math.floor(num * Math.pow(10, cent) + 0.50000000001); // 把指定的小数位先转换成整数.多余的小数位四舍五入
let cents = num % Math.pow(10, cent); // 求出小数位数值
num = Math.floor(num / Math.pow(10, cent)).toString(); // 求出整数位数值
cents = cents.toString(); // 把小数位转换成字符串,以便求小数位长度
while (cents.length < cent) cents = '0' + cents; // 补足小数位到指定的位数
if (isThousand) {
// 对整数部分进行千分位格式化.
for (let i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3))
}
}
return (0 < cent) ? '¥' + ((sign) ? '' : '-') + num + '.' + cents : '¥' + ((sign) ? '' : '-') + num
},
// 去除货币符、千分位
delCommafy: function (num) {
return ('' == (num + '').trim()) ? '' : num.replace(/¥|,|%/gi, '')
}
});
</script>
</body>
</html>