web_lib

Common web application libraries
git clone https://radroots.dev/git/web_lib.git
Log | Files | Refs | LICENSE

regex.ts (4330B)


      1 export const util_rxp = {
      2     email: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,
      3     email_ch: /^[a-zA-Z0-9._%+-@-]*$/,
      4     product_key: /^[A-Za-z_]+$/,
      5     product_key_ch: /^[A-Za-z_]$/,
      6     product_title: /[A-Za-z0-9 ]+$/,
      7     product_title_ch: /[A-Za-z0-9 ]$/,
      8     float: /^[+-]?(\d+(\.\d*)?|\.\d+)$/,
      9     float_ch: /^[0-9\.\+\-]$/,
     10     float_pos: /^\d+(\.\d+)?$/,
     11     float_pos_ch: /^[0-9\.]$/,
     12     description: /^(?:\S+(?:\s+\S+)*)$/,
     13     description_ch: /[^a-zA-Z0-9.,!?;:'"(){}[]\s\u0600-\u06FF\u0900-\u097F\u0400-\u04FF\u0500-\u052F\u1F00-\u1FFF\u4E00-\u9FFF\uAC00-\uD7AF\u3040-\u309F\u30A0-\u30FF ]+/,
     14     nbsp: /[\u00A0]/g,
     15     nbsp_rp: /[\u00A0]+/g,
     16     rtlm: /[\u200F]/g,
     17     rtlm_rp: /[\u200F]+/g,
     18     commas: /[,]+/g,
     19     periods: /[.]+/g,
     20     word_only: /^[a-zA-Z]+$/,
     21     alpha: /[a-zA-Z ]$/,
     22     alpha_ch: /[a-zA-Z ]$/,
     23     num: /^[0-9]+$/,
     24     lat: /^[-+]?([1-8]?[0-9](\.\d{1,6})?|90(\.0{1,6})?)$/,
     25     lat_ch: /^[\d\.\+\-]$/,
     26     lng: /^[-+]?((1[0-7]?[0-9]|180)(\.\d{1,6})?|(\d{1,2})(\.\d{1,6})?)$/,
     27     lng_ch: /^[\d\.\+\-]$/,
     28     alphanum: /[a-zA-Z0-9., ]$/,
     29     alphanum_ch: /[a-zA-Z0-9.,\s\u0600-\u06FF\u0900-\u097F\u0400-\u04FF\u0500-\u052F\u1F00-\u1FFF\u4E00-\u9FFF\uAC00-\uD7AF\u3040-\u309F\u30A0-\u30FF ]+/,
     30     price: /^\d+(\.\d+)?$/,
     31     price_ch: /[0-9.]$/,
     32     price_cur: /^[A-Za-z]{3}$/,
     33     price_cur_ch: /[A-Za-z]$/,
     34     profile_name: /^[a-zA-Z0-9._]{3,30}$/,
     35     profile_name_ch: /[a-zA-Z0-9._]/,
     36     trade_product_key: /^(?:[a-zA-Z0-9]+(?:\s+[a-zA-Z0-9]+){0,2})$/,
     37     trade_product_category: /^(?:[a-zA-Z0-9]+(?:\s+[a-zA-Z0-9]+){0,2})$/,
     38     currency_symbol: /(?:[A-Za-z]{3,5}\$|\p{Sc})/u,
     39     currency_marker: /(?:[A-Za-z]{2,4}[^\d\s]+|[^\d\s]{1,3}[A-Za-z]{2,4})/,
     40     ws_proto: /^(wss:\/\/|ws:\/\/)/,
     41     bin_display_unit: /^(kg|lb|g)$/,
     42     bin_display_unit_ch: /[A-Za-z]$/,
     43     url_image_upload: /^file:\/\/.*\.(png|jpg|jpeg|gif|webp|bmp|svg)$/,
     44     url_image_upload_dev: /^file:\/\/.*\.(png|jpg|jpeg|gif|webp|bmp|svg)$/,
     45     country_code_a2: /^[A-Za-z]{2}$/,
     46     addr_primary: /[a-zA-Z0-9., ]$/,
     47     addr_admin: /[a-zA-Z0-9., ]$/,
     48     num_int: /^[0-9]$/,
     49     area_unit: /^(ac|ha|ft2|m2)$/,
     50     area_unit_ch: /[A-Za-z2]$/,
     51 };
     52 
     53 export type FormFieldsKey =
     54     | `nostr_secret_key`
     55     | `product_title`
     56     | `product_key`
     57     | `product_process`
     58     | `product_description`
     59     | `price`
     60     | `price_currency`
     61     | `bin_display_unit`
     62     | `bin_display_amount`
     63     | `bin_label`
     64     | `farm_name`
     65     | `farm_size`
     66     | `area`
     67     | `area_unit`
     68     | `contact_name`
     69     | `profile_name`
     70 
     71 export type FormField = {
     72     validate: RegExp;
     73     charset: RegExp;
     74 };
     75 
     76 export const form_fields: Record<FormFieldsKey, FormField> = {
     77     profile_name: {
     78         charset: util_rxp.profile_name_ch,
     79         validate: util_rxp.profile_name,
     80     },
     81     product_description: {
     82         charset: util_rxp.alpha_ch,
     83         validate: util_rxp.alpha,
     84     },
     85     product_key: {
     86         charset: util_rxp.product_key_ch,
     87         validate: util_rxp.product_key,
     88     },
     89     product_title: {
     90         charset: util_rxp.product_title_ch,
     91         validate: util_rxp.product_title,
     92     },
     93     product_process: {
     94         charset: util_rxp.alphanum_ch,
     95         validate: util_rxp.alphanum,
     96     },
     97     price: {
     98         charset: util_rxp.price_ch,
     99         validate: util_rxp.price,
    100     },
    101     price_currency: {
    102         charset: util_rxp.price_cur_ch,
    103         validate: util_rxp.price_cur,
    104     },
    105     bin_display_amount: {
    106         charset: util_rxp.float_pos_ch,
    107         validate: util_rxp.float_pos,
    108     },
    109     bin_display_unit: {
    110         charset: util_rxp.bin_display_unit_ch,
    111         validate: util_rxp.bin_display_unit,
    112     },
    113     bin_label: {
    114         charset: util_rxp.alphanum_ch,
    115         validate: util_rxp.alphanum,
    116     },
    117     area: {
    118         charset: util_rxp.float_ch,
    119         validate: util_rxp.float,
    120     },
    121     area_unit: {
    122         charset: util_rxp.area_unit_ch,
    123         validate: util_rxp.area_unit,
    124     },
    125     farm_name: {
    126         charset: util_rxp.alpha_ch,
    127         validate: util_rxp.alpha,
    128     },
    129     farm_size: {
    130         charset: util_rxp.num_int,
    131         validate: util_rxp.num_int,
    132     },
    133     contact_name: {
    134         charset: util_rxp.alpha_ch,
    135         validate: util_rxp.alpha,
    136     },
    137     nostr_secret_key: {
    138         charset: util_rxp.alpha_ch,
    139         validate: util_rxp.alpha,
    140     }
    141 };