isTWCard.js

import { toString } from 'ut2';
// 台湾居民来往大陆通行证正则
const regTWCard = /^\d{8}$/i;
// 一次性短期台胞证
const singleRegTWCard = /^[\da-z]{10,12}$/i;
/**
 * 检测值是否为台湾居民来往大陆通行证,俗称台胞证。
 *
 * @alias module:Validator.isTWCard
 * @since 4.0.0
 * @see {@link https://zh.wikipedia.org/wiki/台湾居民来往大陆通行证 台湾居民来往大陆通行证}
 * @param {*} value 要检测的值
 * @param {Object} [options] 配置项
 * @param {boolean} [options.loose=false] 宽松模式,默认`false`。如果为true,表示支持一次性短期通行证
 * @returns {boolean} 是否为台湾居民来往大陆通行证
 * @example
 *
 * isTWCard('12345678'); // true
 * isTWCard('07257456'); // true
 *
 * // 一次性短期
 * isTWCard('F290299977'); // false
 *
 * // 宽松模式,支持一次性短期通行证
 * isTWCard('F290299977', { loose: true }); // true
 */
function isTWCard(value, options = {}) {
    const { loose = false } = options;
    const valueStr = toString(value);
    if (regTWCard.test(valueStr)) {
        return true;
    }
    return loose ? singleRegTWCard.test(valueStr) : false;
}
export default isTWCard;