<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<input type="text" id="inputVal" value="12123%Va" />
<button type="submit" onclick="postForm()">确定</button>
<p id="resultVal"></p>
<script>
const inputVal = document.getElementById("inputVal");
const resultVal = document.getElementById("resultVal");
function postForm() {
resultVal.innerText =
(inputVal.value && checkFn(inputVal.value)) || false;
}
function checkFn(value) {
const regx = /^(?=.*([0-9a-zA-Z])\1{3}).[A-Za-z0-9]+$/;
if (regx.test(value)) {
// 相同校验
return true;
} else {
// 串联校验
let valueArr = value.split("");
let chartCode = []; // 存放ASCII码
let isAlive = false;
let count = 0;
let lastDeffer = 0;
for (let i in valueArr) {
chartCode.push(value.charCodeAt(i));
if (chartCode.length === valueArr.length) {
for (let i = 1; i < chartCode.length; i++) {
let deffer = Number(chartCode[i]) - Number(chartCode[i - 1]);
if ((deffer === 1 || deffer === -1) && deffer === lastDeffer) {
count++;
if (count >= 2) {
isAlive = true;
break;
}
} else {
count = 0;
}
lastDeffer = deffer;
}
}
}
return isAlive;
}
}
</script>
</body>
</html>
12-04
2510
11-30
7480