123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import { useI18n } from '@/hooks/web/useI18n'
- import { FormItemRule } from 'element-plus'
- const { t } = useI18n()
- interface LengthRange {
- min: number
- max: number
- message?: string
- }
- export const useValidator = () => {
- const required = (message?: string): FormItemRule => {
- return {
- required: true,
- message: message || t('common.required')
- }
- }
- const lengthRange = (options: LengthRange): FormItemRule => {
- const { min, max, message } = options
- return {
- min,
- max,
- message: message || t('common.lengthRange', { min, max })
- }
- }
- const notSpace = (message?: string): FormItemRule => {
- return {
- validator: (_, val, callback) => {
- if (val?.indexOf(' ') !== -1) {
- callback(new Error(message || t('common.notSpace')))
- } else {
- callback()
- }
- }
- }
- }
- const notSpecialCharacters = (message?: string): FormItemRule => {
- return {
- validator: (_, val, callback) => {
- if (/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/gi.test(val)) {
- callback(new Error(message || t('common.notSpecialCharacters')))
- } else {
- callback()
- }
- }
- }
- }
- const isEmail = (message: string): FormItemRule => {
- return {
- validator: (_, val, callback) => {
- // 判断是否是邮箱
- if (!/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/g.test(val)) {
- callback(new Error(message))
- } else {
- callback()
- }
- }
- }
- }
- const isMobilePhone = (message: string): FormItemRule => {
- return {
- validator: (_, val, callback) => {
- // 判断是否是手机号
- if (
- !/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/g.test(val)
- ) {
- callback(new Error(message))
- } else {
- callback()
- }
- }
- }
- }
- return {
- required,
- lengthRange,
- notSpace,
- notSpecialCharacters,
- isEmail,
- isMobilePhone
- }
- }
|