规则
3(顶级)
- 重复序列:5A、6A、7A(如:88888、666666、1111111)、特殊 4A (仅 6666、8888)
- 连续序列:5顺、6顺、7顺(如:12345、345678、7654321)
- 特殊模式:AABBCC、AAABBB(如:112233、444555)
2(精品)
- 重复序列:普通 4A(如:1111、0000,不包含 6666、8888)
- 连续序列:4顺(如:1234、5432)
- 特殊模式:ABCABC(如:123123、789789)
1(优质)
- 重复序列:3A(如:333、777)
- 连续序列:3顺(如:123、765)
- 特殊模式:AABB、ABAB(如:2266、3535)
- 爱情数字:1314、520、521
号码判断函数,输入一个 5-7 位数字。输出结构:
- 等级:(1-3 数字为靓号等级,0 为非靓号)
- 是否包含 4: boolean
- 需要高亮的的数字区域: number
- 满足的靓号规则: 5A、5 顺等
其他
普通号码
代码实现
举例说明
- 重复序列:3A、4A、5A 等(如果是特殊数字 6或 8 的重复序列则为 3AA、4AA 格式)
- 连续序列:4S、5S、6S 等,如果是倒顺数字则使用 T,例如:5ST、6ST 等
- 特殊模式:AABB、ABCABC、AABBCC 等
- 爱情数字:L
定义结果
interface JudgeResult {
// 等级
grade: number;
// 是否包含4
has4: boolean;
// 需要高亮的的数字区域下标
highlight: [number, number] | null;
// 满足的靓号规则
rule: string;
}
实现代码
interface JudgeResult {
// 等级
grade: number;
// 是否包含4
has4: boolean;
// 需要高亮的的数字区域下标
highlight: [number, number] | null;
// 满足的靓号规则
rule: string;
}
/*
举例说明:
重复序列:3A、4A、5A 等(如果是特殊数字 6或 8 的重复序列则为 3AA、4AA 格式)
连续序列:4S、5S、6S 等,如果是倒顺数字则使用 T,例如:5ST、6ST 等
特殊模式:AABB、ABCABC、AABBCC 等
爱情数字:L
*/
// 定义规则接口
interface Rule {
name: string;
grade: number | ((s: string) => number);
match: (numberStr: string) => RegExpExecArray | null;
getRuleName?: (match: RegExpExecArray, numberStr: string) => string;
getHighlight?: (match: RegExpExecArray) => [number, number];
priority: number; // 优先级,数字越小优先级越高
}
/**
* 生成重复序列的正则表达式
* @param length 重复长度
* @param isSpecial 是否为特殊数字(6或8)
*/
function generateRepeatRegex(length: number, isSpecial = false): RegExp {
if (isSpecial) {
// 特殊数字重复序列 (6或8重复)
return new RegExp(`([68])\\1{
${
length - 1}}`, 'g');
}
// 普通数字重复序列
return new RegExp(`(\\d)\\1{
${
length - 1}}`, 'g');
}
/**
* 检查是否为连续序列
* @param numberStr 数字字符串
* @param isAscending 是否为升序
*/
function isConsecutiveSequ