fix: A股板块校验
This commit is contained in:
@@ -20,26 +20,44 @@ export enum MarketType {
|
|||||||
* @returns 是否为有效的A股代码
|
* @returns 是否为有效的A股代码
|
||||||
*/
|
*/
|
||||||
export const validateAStock = (code: string): boolean => {
|
export const validateAStock = (code: string): boolean => {
|
||||||
// 上海证券交易所股票代码以6开头,6位数字
|
// 深A主板股票代码00开头,6位数字
|
||||||
// 深圳证券交易所股票代码以0或3开头,6位数字
|
// 中小板股票代码002、003、004开头,6位数字
|
||||||
// 科创板股票代码以688开头,6位数字
|
// 创业板股票代码300开头,6位数字
|
||||||
|
// 沪A主板股票代码600、601、603开头,6位数字
|
||||||
|
// 科创板股票代码688开头,6位数字
|
||||||
|
// 深B股票代码200开头,6位数字
|
||||||
|
// 沪B股票代码900开头,6位数字
|
||||||
|
// 老三板A股代码400开头,6位数字
|
||||||
|
// 老三板B股代码420开头,6位数字
|
||||||
// 北京证券交易所股票代码以8开头,一般为5位数字(如80XXX)
|
// 北京证券交易所股票代码以8开头,一般为5位数字(如80XXX)
|
||||||
// 北交所科技创新板块股票代码以43开头,6位数字
|
// 股转挂牌股票代码430、830开头,6位数字
|
||||||
// 注意:中小板、创业板代码格式已合并处理
|
|
||||||
|
|
||||||
// 验证上海证券交易所(以6开头的6位数字)
|
// 所有6位数字的股票代码前缀
|
||||||
if (code.startsWith('6') && /^\d{6}$/.test(code)) {
|
const validPrefixes6Digits = [
|
||||||
|
'00', // 深A主板
|
||||||
|
'002', // 中小板
|
||||||
|
'003', // 中小板
|
||||||
|
'004', // 中小板
|
||||||
|
'300', // 创业板
|
||||||
|
'600', // 沪A主板
|
||||||
|
'601', // 沪A主板
|
||||||
|
'603', // 沪A主板
|
||||||
|
'688', // 科创板
|
||||||
|
'200', // 深B股
|
||||||
|
'900', // 沪B股
|
||||||
|
'400', // 老三板A股
|
||||||
|
'420', // 老三板B股
|
||||||
|
'430', // 股转挂牌股票
|
||||||
|
'830' // 股转挂牌股票
|
||||||
|
];
|
||||||
|
|
||||||
|
// 验证6位数字的股票代码
|
||||||
|
if (/^\d{6}$/.test(code)) {
|
||||||
|
for (const prefix of validPrefixes6Digits) {
|
||||||
|
if (code.startsWith(prefix)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 验证深圳证券交易所(以0或3开头的6位数字)
|
|
||||||
if ((code.startsWith('0') || code.startsWith('3')) && /^\d{6}$/.test(code)) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 验证科创板(以688开头的6位数字)
|
|
||||||
if (code.startsWith('688') && /^\d{6}$/.test(code)) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 验证北京证券交易所(以8开头的股票)
|
// 验证北京证券交易所(以8开头的股票)
|
||||||
@@ -48,11 +66,6 @@ export const validateAStock = (code: string): boolean => {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 验证北交所科技创新板块(以43开头的6位数字)
|
|
||||||
if (code.startsWith('43') && /^\d{6}$/.test(code)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -109,7 +122,7 @@ export const validateStockCode = (
|
|||||||
if (!validateAStock(code)) {
|
if (!validateAStock(code)) {
|
||||||
return {
|
return {
|
||||||
valid: false,
|
valid: false,
|
||||||
errorMessage: `无效的A股股票代码格式: ${code}。A股代码应以0、3、6、688、8或43开头,且为6位数字(北交所8开头为5位数字)`
|
errorMessage: `无效的A股股票代码格式: ${code}。支持的代码格式包括:深A主板(00)、中小板(002/003/004)、创业板(300)、沪A主板(600/601/603)、科创板(688)、深B股(200)、沪B股(900)、老三板(400/420)、北交所(8开头5位数)、股转系统(430/830)`
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user