{"version":3,"sources":["../src/constants/regex.ts"],"names":["THOUSAND_SEPARATOR_REGEX","TRIM_NON_NUMERIC_REGEX","ZERO_DOT_END_REGEX","EMPTY_START_REGEX","ZERO_YUAN_REGEX","ZERO_DOT_PLUS_REGEX","WHOLE_REGEX","REGEX","buildRegex","baseRegex","options","strict","global","ignoreCase","multiLine","dotAll","unicode","sticky","flags","regexStr"],"mappings":";;AAIaA,IAAAA,CAAAA,CAA2B,wBAG3BC,CAAyB,CAAA,WAAA,CAGzBC,EAAqB,SACrBC,CAAAA,CAAAA,CAAoB,KACpBC,CAAkB,CAAA,SAAA,CAClBC,EAAsB,QACtBC,CAAAA,CAAAA,CAAc,MAKdC,CAAQ,CAAA,CAKnB,0BAA2B,0BAM3B,CAAA,eAAA,CAAiB,6BAKjB,MAAQ,CAAA,eAAA,CAIR,QAAS,OAKT,CAAA,gBAAA,CAAkB,MAKlB,gBAAkB,CAAA,MAAA,CAKlB,qBAAsB,eAKtB,CAAA,KAAA,CAAO,aAKP,cAAgB,CAAA,UAAA,CAKhB,eAAgB,WAKhB,CAAA,kBAAA,CAAoB,4BAKpB,kBAAoB,CAAA,aAAA,CAKpB,oBAAqB,2EAKrB,CAAA,cAAA,CAAgB,8BAKhB,WAAa,CAAA,mDAAA,CAKb,kBAAmB,eAKnB,CAAA,kBAAA,CAAoB,oBAKpB,2BAA6B,CAAA,wDAAA,CAO7B,MAAO,KAKP,CAAA,sBAAA,CAAwB,uCACxB,KAAO,CAAA,8EAAA,CACP,MAAO,2HAKP,CAAA,UAAA,CAAY,oFACZ,IAAM,CAAA,0HAAA,CAKN,YAAa,mLAKb,CAAA,WAAA,CAAa,2FACb,GAAK,CAAA,qEAAA,CAKL,QAAS,kBAKT,CAAA,YAAA,CAAc,uBAKd,iBAAmB,CAAA,wDAAA,CAKnB,kBAAmB,kFAKnB,CAAA,eAAA,CAAiB,mWAKjB,gCAAkC,CAAA,kDAAA,CAKlC,uCAAwC,sDAKxC,CAAA,wBAAA,CAA0B,6GAK1B,4BAA8B,CAAA,oFAAA,CAI9B,uBAAwB,sFAQxB,CAAA,OAAA,CAAS,mBAKT,kBACI,CAAA,8UAAA,CAKJ,UAAW,6DAKX,CAAA,cAAA,CAAgB,YAKhB,wBAA0B,CAAA,QAAA,CAK1B,yBAA0B,QAG5B,EAQO,SAASC,CAAWC,CAAAA,CAAAA,CAAmBC,EAAwB,EAAC,CAAW,CAChF,GAAM,CACJ,OAAAC,CAAS,CAAA,CAAA,CAAA,CACT,OAAAC,CAAS,CAAA,CAAA,CAAA,CACT,WAAAC,CAAa,CAAA,CAAA,CAAA,CACb,UAAAC,CAAY,CAAA,CAAA,CAAA,CACZ,OAAAC,CAAS,CAAA,CAAA,CAAA,CACT,QAAAC,CAAU,CAAA,CAAA,CAAA,CACV,OAAAC,CAAS,CAAA,CAAA,CACX,EAAIP,CAEA,CAAA,CAAE,MAAAQ,CAAM,CAAA,CAAIT,EAChBS,CAASN,EAAAA,CAAAA,CAAS,IAAM,EACxBM,CAAAA,CAAAA,EAASL,EAAa,GAAM,CAAA,EAAA,CAC5BK,GAASJ,CAAY,CAAA,GAAA,CAAM,GAC3BI,CAASH,EAAAA,CAAAA,CAAS,IAAM,EACxBG,CAAAA,CAAAA,EAASF,EAAU,GAAM,CAAA,EAAA,CACzBE,GAASD,CAAS,CAAA,GAAA,CAAM,GAGxBC,CAAQ,CAAA,KAAA,CAAM,KAAK,IAAI,GAAA,CAAIA,CAAK,CAAC,CAAA,CAAE,KAAK,EAAE,CAAA,CAE1C,IAAIC,CAAWV,CAAAA,CAAAA,CAAU,OACzB,OAAIE,CAAAA,GACFQ,EAAW,CAAIA,CAAAA,EAAAA,CAAQ,KAGlB,IAAI,MAAA,CAAOA,CAAUD,CAAAA,CAAK,CACnC","file":"chunk-6NRDSJFI.cjs","sourcesContent":["import { RegexOptions } from '../../types/common';\r\n\r\n// thousand separator(千分位分隔符)\r\n// example: \"1234567890\".replace(THOUSAND_SEPARATOR_REGEX, ','); -> \"1,234,567,890\"\r\nexport const THOUSAND_SEPARATOR_REGEX = /\\B(?=(\\d{3})+(?!\\d))/g;\r\n\r\n// export const TRIM_NON_NUMERIC_REGEX = /^[^\\d.-]+|[^\\d.-]+$/g;\r\nexport const TRIM_NON_NUMERIC_REGEX = /[^\\d.-]+/g;\r\n// digit-uppercase\r\n// export const ZERO_DOT_REGEX = /零./;\r\nexport const ZERO_DOT_END_REGEX = /(零.)*零$/;\r\nexport const EMPTY_START_REGEX = /^$/;\r\nexport const ZERO_YUAN_REGEX = /(零.)*零元/;\r\nexport const ZERO_DOT_PLUS_REGEX = /(零.)+/g;\r\nexport const WHOLE_REGEX = /^整$/;\r\n\r\n// ------------------------------- common -------------------------------\r\n\r\n\r\nexport const REGEX = {\r\n\r\n  /**\r\n   * a thousand separated number(千分位数字)\r\n   */\r\n  THOUSAND_SEPARATED_NUMBER: /\\d{1,3}(,\\d{3})+(\\.\\d+)?/,\r\n\r\n  /**\r\n   *   Numeric/currency amount (supports negative numbers, thousand separators)\r\n   *   数字/货币金额（支持负数、千分位分隔符）\r\n   */\r\n  NUMBER_CURRENCY: /-?\\d{1,3}(,\\d{3})*(\\.\\d+)?/,\r\n\r\n  /**\r\n   * number(数字)\r\n   */\r\n  NUMBER: /-?\\d+(\\.\\d+)?/,\r\n  /**\r\n   * integer(整数)\r\n   */\r\n  INTEGER: /-?\\d+/,\r\n\r\n  /**\r\n   * positive integer(正整数)\r\n   */\r\n  POSITIVE_INTEGER: /\\d+/,\r\n\r\n  /**\r\n   * negative integer(负整数)\r\n   */\r\n  NEGATIVE_INTEGER: /-\\d+/,\r\n\r\n  /**\r\n   * non-positive integer(非正整数)\r\n   */\r\n  NON_POSITIVE_INTEGER: /((-\\d+)|(0+))/,\r\n\r\n  /**\r\n   * float(浮点数)\r\n   */\r\n  FLOAT: /-?\\d+\\.\\d+/,\r\n\r\n  /**\r\n   * positive float(正浮点数)\r\n   */\r\n  POSITIVE_FLOAT: /\\d+\\.\\d+/,\r\n\r\n  /**\r\n   * negative float(负浮点数)\r\n   */\r\n  NEGATIVE_FLOAT: /-\\d+\\.\\d+/,\r\n\r\n  /**\r\n   * non-positive float(非正浮点数)\r\n   */\r\n  NON_POSITIVE_FLOAT: /((-\\d+\\.\\d+)|(0+(\\.0+)?))/,\r\n\r\n  /**\r\n   * non-negative float(非负浮点数)\r\n   */\r\n  NON_NEGATIVE_FLOAT: /\\d+(\\.\\d+)?/,\r\n\r\n  /**\r\n   * chinese postal code(中国邮政编码)\r\n   */\r\n  CHINESE_POSTAL_CODE: /(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\\d{4}/,\r\n\r\n  /**\r\n   * chinese mobile(中国手机号)\r\n   */\r\n  CHINESE_MOBILE: /(?:(?:\\+|00)86)?1[3-9]\\d{9}/,\r\n\r\n  /**\r\n   * chinese tel(中国固话号码)\r\n   */\r\n  CHINESE_TEL: /(?:(?:\\d{3}-)?\\d{8}|^(?:\\d{4}-)?\\d{7,8})(?:-\\d+)?/,\r\n\r\n  /**\r\n   * chinese bank card(中国银行卡号)\r\n   */\r\n  CHINESE_BANK_CARD: /[1-9]\\d{9,29}/,\r\n\r\n  /**\r\n   * chinese tax number(中国税号)\r\n   */\r\n  CHINESE_TAX_NUMBER: /[\\dA-Za-z]{15,20}/,\r\n  /**\r\n   * decimal number (supports scientific notation)\r\n   * 十进制数（支持科学记数法）\r\n   */\r\n  DECIMAL_SCIENTIFIC_NOTATION: /[+-]?(\\d+(\\.\\d*)?([Ee][+-]?\\d+)?|\\.\\d+([Ee][+-]?\\d+)?)/,\r\n  // },\r\n  // string: {\r\n  //\r\n  /**\r\n   * blank string(空白字符串)\r\n   */\r\n  BLANK: /\\s*/,\r\n\r\n  /**\r\n   * non-special characters(非特殊字符)\r\n   */\r\n  NON_SPECIAL_CHARACTERS: /[^!@#$%^&*()_+\\-=\\[\\]{};:\"|,.<>\\/?]*/, // eslint-disable-line no-useless-escape\r\n  EMOJI: /(\\ud83c[\\udf00-\\udfff])|(\\ud83d[\\udc00-\\ude4f\\ude80-\\udeff])|[\\u2600-\\u2B55]/,\r\n  EMAIL: /(([^\\s\"(),.:;<>@[\\\\\\]]+(\\.[^\\s\"(),.:;<>@[\\\\\\]]+)*)|(\".+\"))@((\\[(?:\\d{1,3}\\.){3}\\d{1,3}])|(([\\dA-Za-z-]+\\.)+[A-Za-z]{2,}))/,\r\n\r\n  /**\r\n   * ip address(IP网址)\r\n   */\r\n  IP_ADDRESS: /((https?|ftp|file):\\/\\/)?((\\d{1,3}\\.){3}\\d{1,3}|localhost)(:\\d{1,5})?(\\/[\\w.-]*)*/,\r\n  IPV4: /(([01]?\\d\\d?|2[0-4]\\d|25[0-5])((:([1-9]\\d{0,3}|[1-5]\\d{4}|6[0-4]\\d{3}|65[0-4]\\d{2}|655[0-2]\\d|6553[0-5]))?$|\\.(?!$))){4}/,\r\n\r\n  /**\r\n   * subnet mask(子网掩码)\r\n   */\r\n  SUBNET_MASK: /(254|252|248|240|224|192|128)\\.0\\.0\\.0|255\\.(254|252|248|240|224|192|128|0)\\.0\\.0|255\\.255\\.(254|252|248|240|224|192|128|0)\\.0|255\\.255\\.255\\.(255|254|252|248|240|224|192|128|0)/,\r\n\r\n  /**\r\n   * mac address(mac地址)\r\n   */\r\n  MAC_ADDRESS: /(([\\da-f][,02468ace]:([\\da-f]{2}:){4})|([\\da-f][,02468ace]-([\\da-f]{2}-){4}))[\\da-f]{2}/i,\r\n  URL: /((https?|ftp|file):\\/\\/)?([\\d.a-z-]+)\\.([.a-z]{2,6})(\\/[\\w.-]*)*\\/?/,\r\n\r\n  /**\r\n   * simplified chinese(简体中文)\r\n   */\r\n  CHINESE: /[\\u4E00-\\u9FA5]+/,\r\n\r\n  /**\r\n   * chinese name(中文姓名)\r\n   */\r\n  CHINESE_NAME: /[\\u4E00-\\u9FA5]{2,4}/,\r\n\r\n  /**\r\n   * chinese id card 1G(中国身份证号1代)\r\n   */\r\n  CHINESE_ID_CARD_1: /[1-9]\\d{7}(?:0\\d|10|11|12)(?:0[1-9]|[12]\\d|30|31)\\d{3}/,\r\n\r\n  /**\r\n   * chinese id card 2G(中国身份证号2代)\r\n   */\r\n  CHINESE_ID_CARD_2: /[1-9]\\d{5}(?:18|19|20)\\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[12]\\d|30|31)\\d{3}[\\dXx]/,\r\n\r\n  /**\r\n   * chinese id card(中国身份证号)\r\n   */\r\n  CHINESE_ID_CARD: /\\d{6}((((((19|20)\\d{2})(0[13-9]|1[0-2])(0[1-9]|[12]\\d|30))|(((19|20)\\d{2})(0[13578]|1[02])31)|((19|20)\\d{2})02(0[1-9]|1\\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\\d{3})|((((\\d{2})(0[13-9]|1[0-2])(0[1-9]|[12]\\d|30))|((\\d{2})(0[13578]|1[02])31)|((\\d{2})02(0[1-9]|1\\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\\d{2}))([\\dXx])/,\r\n\r\n  /**\r\n   * Unified Social Credit Identifier (统一社会信用代码)\r\n   */\r\n  UNIFIED_SOCIAL_CREDIT_IDENTIFIER: /[\\dA-HJ-NP-RTUW-Y]{2}\\d{6}[\\dA-HJ-NP-RTUW-Y]{10}/,\r\n\r\n  /**\r\n   * loose unified social credit identifier(宽松统一社会信用代码)\r\n   */\r\n  LOOSE_UNIFIED_SOCIAL_CREDIT_IDENTIFIER: /(([\\dA-Za-z]{15})|([\\dA-Za-z]{18})|([\\dA-Za-z]{20}))/,\r\n\r\n  /**\r\n   * New energy vehicle license plate(新能源车牌号)\r\n   */\r\n  NEW_ENERGY_LICENSE_PLATE: /[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z](([DF]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[DF]))/,\r\n\r\n  /**\r\n   * Non-new energy vehicle license plate(非新能源车牌号)\r\n   */\r\n  NON_NEW_ENERGY_LICENSE_PLATE: /[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]/,\r\n  /**\r\n   * Combined, for both new energy and non-new energy vehicle license plates(联合新能源和非新能源车牌号)\r\n   */\r\n  COMBINED_LICENSE_PLATE: /[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]/,\r\n\r\n  /**\r\n   *   starts with a letter, allows 5-16 bytes,\r\n   *   allows combination of letters, numbers, and underscores\r\n   *   以字母开头，允许5-16个字节，\r\n   *   允许字母、数字和下划线组合\r\n   */\r\n  ACCOUNT: /[A-Za-z]\\w{4,15}/,\r\n\r\n  /**\r\n   * chinese characters(中文字符，包括繁体)\r\n   */\r\n  CHINESE_CHARACTERS:\r\n      /(?:[\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uFA0E\\uFA0F\\uFA11\\uFA13\\uFA14\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29]|[\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0])+/,\r\n\r\n  /**\r\n   * hexadecimal color(十六进制颜色#cf0cf0)\r\n   */\r\n  HEX_COLOR: /#?([\\dA-Fa-f]{6}|[\\dA-Fa-f]{3}|[\\dA-Fa-f]{8}|[\\dA-Fa-f]{4})/,\r\n\r\n  /**\r\n   * english letters(英文字母)\r\n   */\r\n  ENGLISH_LETTER: /[A-Za-z]+/,\r\n\r\n  /**\r\n   * lower case english letters(小写英文字母)\r\n   */\r\n  LOWERCASE_ENGLISH_LETTER: /[a-z]+/,\r\n\r\n  /**\r\n   * upper case english letters(大写英文字母)\r\n   */\r\n  UPPERCASE_ENGLISH_LETTER: /[A-Z]+/,\r\n\r\n  // },\r\n};\r\n\r\n/**\r\n * dynamically build regex(动态构建正则表达式)\r\n * @param baseRegex - regex(正则表达式)\r\n * @param options - 选项对象，包含是否全字符串匹配、是否全局搜索等选项\r\n * @return 返回构建的正则表达式\r\n */\r\nexport function buildRegex(baseRegex: RegExp, options: RegexOptions = {}): RegExp {\r\n  const {\r\n    strict = false,\r\n    global = false,\r\n    ignoreCase = false,\r\n    multiLine = false,\r\n    dotAll = false,\r\n    unicode = false,\r\n    sticky = false,\r\n  } = options;\r\n\r\n  let { flags } = baseRegex;\r\n  flags += global ? 'g' : '';\r\n  flags += ignoreCase ? 'i' : '';\r\n  flags += multiLine ? 'm' : '';\r\n  flags += dotAll ? 's' : '';\r\n  flags += unicode ? 'u' : '';\r\n  flags += sticky ? 'y' : '';\r\n\r\n  // remove duplicate flags(移除重复的标志)\r\n  flags = Array.from(new Set(flags)).join('');\r\n\r\n  let regexStr = baseRegex.source;\r\n  if (strict) {\r\n    regexStr = `^${regexStr}$`;\r\n  }\r\n\r\n  return new RegExp(regexStr, flags);\r\n}\r\n"]}