/* 手机号码 */
export const phone = /^[1][345678][0-9]{
9}$/
/* 固话 */
export const telephone = /^(\(\d{
3,4}\)|\d{
3,4}-|\s)?\d{
7,14}$/
/* 邮箱 */
export const email = /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/
/* 账号 */
export const account = /^[a-zA-Z].[a-zA-Z0-9_-]{
2,20}$/
/* 密码 - 弱验证 */
export const weekPassword = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{
6,20}$/
/* 密码 - 强验证 (必须包含数字、字母、大写字母和字符中的三种) */
export const strongPassword = /^(?=.*([a-zA-Z].*))(?=.*[0-9].*)(?=.*[A-Z-+.\-=_~!@
/* 密码(必须包含数字和字母,且可以包含字符) */
export const password = /(?=.*([a-zA-Z].*))(?=.*[0-9].*)[a-zA-Z0-9-*/+.-_~!@
/* 身份证 */
export const idCard = /^[1-9]\d{
7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{
3}$|^[1-9]\d{
5}[1-9]\d{
3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{
3}([0-9]|X)$/
/* 军官证 */
export const officerCard = /^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{
4,8})(号?)$/
/* */
export const passportCard = /^([a-zA-z]|[0-9]){
5,17}$/
/* ip */
export const ip = /^(\d{
1}|[1-9]{
1}\d{
1}|1\d\d|2[0-4]\d|25[0-5])\.(\d{
1}|[1-9]{
1}\d{
1}|1\d\d|2[0-4]\d|25[0-5])\.(\d{
1}|[1-9]{
1}\d{
1}|1\d\d|2[0-4]\d|25[0-5])\.(\d{
1}|[1-9]{
1}\d{
1}|1\d\d|2[0-4]\d|25[0-5])$/
export const decimalTwo = /(^[1-9]([0-9]+)?(\.[0-9]{
1,2})?$)|(^(0){
1}$)|(^[0-9]\.[0-9]([0-9])?$)/
/* 社会信用代码 */
export function creditCode(code) {
if (!code) {
return false
}
const pattern = /^[0-9A-Za-z]+$/
if (code.length !== 18 || pattern.test(code) === false) {
return false
} else {
let v // 统一社会信用代码的每一个值
let w // 统一社会信用代码每一个值的权重
let t = 0
const weightedFactors = [
1,
3,
9,
27,
19,
26,
16,
17,
20,
29,
25,
13,
8,
24,
10,
30,
28
] // 加权因子
const str = "0123456789ABCDEFGHJKLMNPQRTUWXY" // 不用I、O、S、V、Z
// 权重与加权因子相乘之和
for (let i = 0; i < code.length - 1; i++) {
v = code.substring(i, i + 1).toUpperCase() // 小写自动转为大写
w = str.indexOf(v)
t = t + w * weightedFactors[i]
}
let logicCheckCode = 31 - (t % 31)
if (logicCheckCode === 31) {
logicCheckCode = 0
}
const codes = [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"J",
"K",
"L",
"M",
"N",
"P",
"Q",
"R",
"T",
"U",
"W",
"X",
"Y"
]
const checkCode = code.substring(17, 18).toUpperCase()
logicCheckCode = codes[logicCheckCode]
return logicCheckCode === checkCode
}
}
/* 组织机构代码 */
export function organCode(code) {
if (code != null) {
const ws = [3, 7, 9, 10, 5, 8, 4, 2]
const str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
const reg = /^([0-9A-Za-z]){
8}-[0-9|Xx]$/
let sum = 0
for (let i = 0; i < 8; i++) {
sum += str.indexOf(code.charAt(i).toUpperCase()) * ws[i]
}
let c9 = 11 - (sum % 11)
c9 = c9 === 10 ? "X" : c9 // 获得校验码
const validStr = code.charAt(9).toUpperCase() // 第9位小写转为大写
return !(!reg.test(code) || String(c9) !== validStr)
}
}