From e4f70ba2eb5e5c9a32c9da2dd6377bf57bd919f7 Mon Sep 17 00:00:00 2001 From: Chang Date: Thu, 29 Aug 2024 17:24:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E6=89=8B=E6=9C=BA?= =?UTF-8?q?=E5=8F=B7=E5=8F=8A=E8=BD=A6=E7=89=8C=E5=8F=B7=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/is/utils.ts | 22 ++++++++++++++++++++++ test/is/utils.test.ts | 36 +++++++++++++++++++++++++++++++++++- 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/src/is/utils.ts b/src/is/utils.ts index 6871d4a..0000519 100644 --- a/src/is/utils.ts +++ b/src/is/utils.ts @@ -17,3 +17,25 @@ export function isEmpty(val: T): val is T { return false } + +/** + * 判断是否为手机号 + * @param val + * @returns 是否为手机号 + * @example isMobileNum(13333333333) // => true + */ +export function isMobileNum(val: string | number): boolean { + return /^1[3-9]\d{9}$/.test(String(val)) +} + +/** + * 判断是否为车牌号 + * @param val + * @returns 是否为车牌号 + */ +export function isCarNo(val: string): boolean { + const oldPattern = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z][A-Z][A-Z0-9]{4}[A-Z0-9挂学警港澳]$/ + const newEnergyPattern = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z](?:(?:[A-Z](?![DF][0-9A-Z])[DF]|[A-Z]{2})[A-Z0-9]{5}|[A-Z0-9]{4}[DF])$/ + + return oldPattern.test(val) || newEnergyPattern.test(val) +} diff --git a/test/is/utils.test.ts b/test/is/utils.test.ts index c85df20..7658e37 100644 --- a/test/is/utils.test.ts +++ b/test/is/utils.test.ts @@ -1,5 +1,9 @@ import { describe, expect, it } from 'vitest' -import { isEmpty } from '../../src/is/utils' +import { + isCarNo, + isEmpty, + isMobileNum, +} from '../../src/is/utils' describe('is 工具函数测试', () => { it('isEmpty 函数应正确判断空值', () => { @@ -9,4 +13,34 @@ describe('is 工具函数测试', () => { expect(isEmpty('')).toBe(true) expect(isEmpty(null)).toBe(false) }) + + it('isMobileNum 函数应正确判断手机号', () => { + expect(isMobileNum(17666666666)).toBe(true) + expect(isMobileNum('17666666666')).toBe(true) + expect(isMobileNum(12666666666)).toBe(false) + expect(isMobileNum(1266666666)).toBe(false) + }) + + it('isCarNo 函数应正确判断车牌号', () => { + expect(isCarNo('123')).toBe(false) + + expect(isCarNo('京A12345')).toBe(true) + expect(isCarNo('川A123AB')).toBe(true) + + expect(isCarNo('京A123456')).toBe(false) + expect(isCarNo('京A2222i')).toBe(false) + + // 挂学警港澳 + expect(isCarNo('京A2222学')).toBe(true) + expect(isCarNo('川AC001警')).toBe(true) + expect(isCarNo('川AC001挂')).toBe(true) + + expect(isCarNo('川AC001京')).toBe(false) + + // 新能源 + expect(isCarNo('京DF12345')).toBe(true) + expect(isCarNo('京DD12345')).toBe(true) + expect(isCarNo('京DF1234D')).toBe(true) + expect(isCarNo('京DF1234F')).toBe(true) + }) })