helping-js
Version:
helping-js: zero-dependency JavaScript utilities — type guards, 50+ regex patterns, validate(), TypeScript .d.ts, v3 helpers (string, array, object, async, date, URL, tree, DOM). Official docs: https://helping-js.netlify.app
186 lines (157 loc) • 16.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.RX_SSN_PARTIAL = exports.RX_SSN_LAST_FOUR = exports.RX_SSN_FULL_SPACE = exports.RX_SSN_FULL_DASH = exports.RX_SSN_FULL = exports.RX_SSN = exports.RX_SPACE_SPLIT = exports.RX_SPACES = exports.RX_REGEXP_REPLACE = exports.RX_QUERY_START = exports.RX_PLUS = exports.RX_PHONE = exports.RX_PASSWORD_UPPERCASE = exports.RX_PASSWORD_SPECIAL = exports.RX_PASSWORD_NUMBER = exports.RX_PASSWORD_LOWERCASE = exports.RX_PASSWORD = exports.RX_NUMBER = exports.RX_LOWER_UPPER = exports.RX_LOWERCASE = exports.RX_LOCALE_MODS_START_GLOBAL = exports.RX_LOCALE_MODS_START = exports.RX_LOCALE_MODS_SPLIT_START_GLOBAL = exports.RX_LOCALE_MODS_SPLIT_START = exports.RX_LOCALE_MODS_SPLIT_GLOBAL = exports.RX_LOCALE_MODS_SPLIT_END_GLOBAL = exports.RX_LOCALE_MODS_SPLIT_END = exports.RX_LOCALE_MODS_SPLIT = exports.RX_LOCALE_MODS_GLOBAL = exports.RX_LOCALE_MODS_END_GLOBAL = exports.RX_LOCALE_MODS_END = exports.RX_LOCALE_MODS = exports.RX_LEADING_TRAILING_WHITESPACE = exports.RX_JS_IDENTIFIER = exports.RX_JSON_VALUE = exports.RX_JSON_STRING = exports.RX_JSON_PAIR = exports.RX_JSON_OBJECT = exports.RX_JSON_NUMBER = exports.RX_JSON_NULL = exports.RX_JSON_BOOLEAN = exports.RX_JSON_ARRAY_ELEMENT_MIDDLE = exports.RX_JSON_ARRAY_ELEMENT_LAST = exports.RX_JSON_ARRAY_ELEMENT_FIRST = exports.RX_JSON_ARRAY_ELEMENT = exports.RX_JSON_ARRAY = exports.RX_ISO_DATE_TIME_TZ = exports.RX_ISO_DATE_TIME_MS = exports.RX_ISO_DATE_TIME = exports.RX_ISO_DATE = exports.RX_IPV6 = exports.RX_IPV4 = exports.RX_IP = exports.RX_HYPHENATE = exports.RX_HTML_TAG_TEXT_TEXT_CONTENT = exports.RX_HTML_TAG_TEXT_TEXT_ATTRIBUTE_VALUE = exports.RX_HTML_TAG_TEXT_TEXT_ATTRIBUTE_NAME = exports.RX_HTML_TAG_TEXT_TEXT_ATTRIBUTES = exports.RX_HTML_TAG_TEXT_TEXT_ATTRIBUTE = exports.RX_HTML_TAG_TEXT_TEXT = exports.RX_HTML_TAG_TEXT_SELF_CLOSING = exports.RX_HTML_TAG_TEXT_OPENING = exports.RX_HTML_TAG_TEXT_CONTENT = exports.RX_HTML_TAG_TEXT_CLOSING = exports.RX_HTML_TAG_TEXT_ATTRIBUTE_VALUE = exports.RX_HTML_TAG_TEXT_ATTRIBUTE_NAME = exports.RX_HTML_TAG_TEXT_ATTRIBUTES = exports.RX_HTML_TAG_TEXT_ATTRIBUTE = exports.RX_HTML_TAG_TEXT = exports.RX_HTML_TAG_SELF_CLOSING = exports.RX_HTML_TAG_OPENING = exports.RX_HTML_TAG_NAME = exports.RX_HTML_TAG_CONTENT = exports.RX_HTML_TAG_CLOSING = exports.RX_HTML_TAG_ATTRIBUTE_VALUE = exports.RX_HTML_TAG_ATTRIBUTE_NAME = exports.RX_HTML_TAG_ATTRIBUTES = exports.RX_HTML_TAG_ATTRIBUTE = exports.RX_HTML_TAGS = exports.RX_HTML_TAG = exports.RX_HTML_COMMENT = exports.RX_HREF = exports.RX_HEX_COLOR = exports.RX_HASH_ID = exports.RX_HASH = exports.RX_FLOAT_NUMBER = exports.RX_FILE_PATH_WINDOWS = exports.RX_FILE_PATH_UNIX = exports.RX_FILE_PATH_MAC = exports.RX_FILE_PATH = exports.RX_EXTENSION = exports.RX_ENCODE_REVERSE = exports.RX_ENCODED_COMMA = exports.RX_EMAIL = exports.RX_DIGITS = exports.RX_DATE = exports.RX_CREDIT_CARD = exports.RX_ASPECT_SEPARATOR = exports.RX_ASPECT = exports.RX_ARRAY_NOTATION = void 0;
exports.RX_UUID_V5 = exports.RX_UUID_V4 = exports.RX_UUID_V3 = exports.RX_UUID_V2 = exports.RX_UUID_V1 = exports.RX_UUID = exports.RX_URL_QUERY = exports.RX_URL_PATH = exports.RX_URL_FRAGMENT = exports.RX_URL = exports.RX_UPPERCASE = exports.RX_UN_KEBAB = exports.RX_UNDERSCORE = exports.RX_TRIM_RIGHT = exports.RX_TRIM_LEFT = exports.RX_TIME_24H_SECONDS = exports.RX_TIME_24H_MS_TZ = exports.RX_TIME_24H_MS = exports.RX_TIME_24H = exports.RX_TIME_12H = exports.RX_TIME = exports.RX_STRIP_LOCALE_MODS_GLOBAL = exports.RX_STRIP_LOCALE_MODS = exports.RX_START_SPACE_WORD = void 0;
// --- General ---
var RX_ARRAY_NOTATION = exports.RX_ARRAY_NOTATION = /\[(\d+)]/g; //get array notation
var RX_DIGITS = exports.RX_DIGITS = /^\d+$/; //digits
var RX_EXTENSION = exports.RX_EXTENSION = /^\..+/; //.test
var RX_HASH = exports.RX_HASH = /^#/; //#test
var RX_HASH_ID = exports.RX_HASH_ID = /^#[A-Za-z]+[\w\-:.]*$/; //#test
var RX_HTML_TAGS = exports.RX_HTML_TAGS = /(<([^>]+)>)/gi; //<div>
var RX_HYPHENATE = exports.RX_HYPHENATE = /\B([A-Z])/g; //teSt
var RX_LOWER_UPPER = exports.RX_LOWER_UPPER = /([a-z])([A-Z])/g; //testTAt lower before upper
var RX_NUMBER = exports.RX_NUMBER = /^[0-9]*\.?[0-9]+$/; //123123 just number
var RX_FLOAT_NUMBER = exports.RX_FLOAT_NUMBER = /^\d+(\.\d+)?$|^\d+\.$/; //123.123
var RX_PLUS = exports.RX_PLUS = /\+/g; //get plus
var RX_REGEXP_REPLACE = exports.RX_REGEXP_REPLACE = /[-/\\^$*+?.()|[\]{}]/g; //check [-/\\^$*+?.()|[\]{}]
var RX_SPACES = exports.RX_SPACES = /[\s\uFEFF\xA0]+/g; //get spaces
var RX_SPACE_SPLIT = exports.RX_SPACE_SPLIT = /\s+/; //first split spaces
// export const RX_STAR = /\/\*$/
var RX_START_SPACE_WORD = exports.RX_START_SPACE_WORD = /(\s|^)(\w)/g; //get start space+character space characters
var RX_TRIM_LEFT = exports.RX_TRIM_LEFT = /^\s+/; //get spaces from start
var RX_TRIM_RIGHT = exports.RX_TRIM_RIGHT = /\s+$/; //get spaces from end
var RX_UNDERSCORE = exports.RX_UNDERSCORE = /_/g; //get _
var RX_UN_KEBAB = exports.RX_UN_KEBAB = /-(\w)/g; //get -+character character
// --- Date ---
// Loose YYYY-MM-DD matching, ignores any appended time information
// Matches '1999-12-20', '1999-1-1', '1999-01-20T22:51:49.118Z', '1999-01-02 13:00:00'
var RX_DATE = exports.RX_DATE = /^\d+-\d\d?-\d\d?(?:\s|T|$)/; //get time first slice
// Time string RegEx (optional seconds)
var RX_TIME = exports.RX_TIME = /^([0-1]?[0-9]|2[0-3]):[0-5]?[0-9](:[0-5]?[0-9])?$/;
// --- URL ---
// HREFs must end with a hash followed by at least one non-hash character
var RX_HREF = exports.RX_HREF = /^.*(#[^#]+)$/;
var RX_ENCODED_COMMA = exports.RX_ENCODED_COMMA = /%2C/g;
var RX_ENCODE_REVERSE = exports.RX_ENCODE_REVERSE = /[!'()*]/g;
var RX_QUERY_START = exports.RX_QUERY_START = /^(\?|#|&)/;
// --- Aspect ---
var RX_ASPECT = exports.RX_ASPECT = /^\d+(\.\d*)?[/:]\d+(\.\d*)?$/;
var RX_ASPECT_SEPARATOR = exports.RX_ASPECT_SEPARATOR = /[/:]/;
// --- Locale ---
var RX_STRIP_LOCALE_MODS = exports.RX_STRIP_LOCALE_MODS = /-u-.+/; //strip locale unicode extensions
var RX_STRIP_LOCALE_MODS_GLOBAL = exports.RX_STRIP_LOCALE_MODS_GLOBAL = /-u-.+/g; //strip locale unicode extensions
var RX_LOCALE_MODS = exports.RX_LOCALE_MODS = /-u-.+/; //locale unicode extensions
var RX_LOCALE_MODS_GLOBAL = exports.RX_LOCALE_MODS_GLOBAL = /-u-.+/g; //locale unicode extensions
var RX_LOCALE_MODS_START = exports.RX_LOCALE_MODS_START = /^-u-.+/; //locale unicode extensions
var RX_LOCALE_MODS_START_GLOBAL = exports.RX_LOCALE_MODS_START_GLOBAL = /^-u-.+/g; //locale unicode extensions
var RX_LOCALE_MODS_END = exports.RX_LOCALE_MODS_END = /-u-.+$/; //locale unicode extensions
var RX_LOCALE_MODS_END_GLOBAL = exports.RX_LOCALE_MODS_END_GLOBAL = /-u-.+$/g; //locale unicode extensions
var RX_LOCALE_MODS_SPLIT = exports.RX_LOCALE_MODS_SPLIT = /-u-/; //locale unicode extensions
var RX_LOCALE_MODS_SPLIT_GLOBAL = exports.RX_LOCALE_MODS_SPLIT_GLOBAL = /-u-/g; //locale unicode extensions
var RX_LOCALE_MODS_SPLIT_START = exports.RX_LOCALE_MODS_SPLIT_START = /^-u-/; //locale unicode extensions
var RX_LOCALE_MODS_SPLIT_START_GLOBAL = exports.RX_LOCALE_MODS_SPLIT_START_GLOBAL = /^-u-/g; //locale unicode extensions
var RX_LOCALE_MODS_SPLIT_END = exports.RX_LOCALE_MODS_SPLIT_END = /-u-$/; //locale unicode extensions
var RX_LOCALE_MODS_SPLIT_END_GLOBAL = exports.RX_LOCALE_MODS_SPLIT_END_GLOBAL = /-u-$/g; //locale unicode extensions
// --- General ---
var RX_UPPERCASE = exports.RX_UPPERCASE = /^[A-Z]+$/; //uppercase letters
var RX_LOWERCASE = exports.RX_LOWERCASE = /^[a-z]+$/; //lowercase letters
var RX_EMAIL = exports.RX_EMAIL = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; //email format
var RX_URL = exports.RX_URL = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i; //URL format
var RX_URL_PATH = exports.RX_URL_PATH = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i; //URL path format
var RX_URL_QUERY = exports.RX_URL_QUERY = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i; //URL query format
var RX_URL_FRAGMENT = exports.RX_URL_FRAGMENT = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i; //URL fragment format
var RX_IPV4 = exports.RX_IPV4 = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; //IPv4 format
var RX_IPV6 = exports.RX_IPV6 = /([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)$/; //IPv6 format
/** IPv4 address (alias of RX_IPV4) */
var RX_IP = exports.RX_IP = RX_IPV4;
var RX_HEX_COLOR = exports.RX_HEX_COLOR = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/; //hex color code
var RX_UUID = exports.RX_UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; //UUID format
var RX_UUID_V1 = exports.RX_UUID_V1 = /^[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; //UUID v1 format
var RX_UUID_V2 = exports.RX_UUID_V2 = /^[0-9a-f]{8}-[0-9a-f]{4}-2[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; //UUID v2 format
var RX_UUID_V3 = exports.RX_UUID_V3 = /^[0-9a-f]{8}-[0-9a-f]{4}-3[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; //UUID v3 format
var RX_UUID_V4 = exports.RX_UUID_V4 = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; //UUID v4 format
var RX_UUID_V5 = exports.RX_UUID_V5 = /^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; //UUID v5 format
var RX_PHONE = exports.RX_PHONE = /^\+?[0-9]{1,4}?[-. ]?\(?[0-9]{1,3}\)?[-. ]?[0-9]{1,4}[-. ]?[0-9]{1,4}$/; //phone number
var RX_CREDIT_CARD = exports.RX_CREDIT_CARD = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|6(?:011|5[0-9]{2})[0-9]{12}|(?:2131|1800|35\d{3})\d{11})$/; //credit card number
var RX_SSN = exports.RX_SSN = /^\d{3}-\d{2}-\d{4}$/; //social security number
var RX_SSN_PARTIAL = exports.RX_SSN_PARTIAL = /^\d{3}-\d{2}-\d{1,4}$/; //partial social security number
var RX_SSN_LAST_FOUR = exports.RX_SSN_LAST_FOUR = /^\d{4}$/; //last four of social security number
var RX_SSN_FULL = exports.RX_SSN_FULL = /^\d{9}$/; //full social security number
var RX_SSN_FULL_DASH = exports.RX_SSN_FULL_DASH = /^\d{3}-\d{2}-\d{4}$/; //full social security number with dashes
var RX_SSN_FULL_SPACE = exports.RX_SSN_FULL_SPACE = /^\d{3} \d{2} \d{4}$/; //full social security number with spaces
// --- Date ---
// ISO 8601 date format
var RX_ISO_DATE = exports.RX_ISO_DATE = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?$/; // ISO date format
var RX_ISO_DATE_TIME = exports.RX_ISO_DATE_TIME = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/; // ISO date time format
var RX_ISO_DATE_TIME_MS = exports.RX_ISO_DATE_TIME_MS = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{1,3}$/; // ISO date time with milliseconds
var RX_ISO_DATE_TIME_TZ = exports.RX_ISO_DATE_TIME_TZ = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z|[+-]\d{2}:\d{2}$/; // ISO date time with time zone
// --- Time ---
// 12-hour time format (with optional AM/PM)
var RX_TIME_12H = exports.RX_TIME_12H = /^(0?[1-9]|1[0-2]):[0-5][0-9] ?([AaPp][Mm])?$/;
var RX_TIME_24H = exports.RX_TIME_24H = /^(0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/;
var RX_TIME_24H_SECONDS = exports.RX_TIME_24H_SECONDS = /^(0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/;
var RX_TIME_24H_MS = exports.RX_TIME_24H_MS = /^(0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.\d{1,3}$/;
var RX_TIME_24H_MS_TZ = exports.RX_TIME_24H_MS_TZ = /^(0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.\d{1,3}Z|[+-]\d{2}:\d{2}$/;
// --- HTML ---
// HTML comments
var RX_HTML_COMMENT = exports.RX_HTML_COMMENT = /<!--([^]*?)-->/g;
var RX_HTML_TAG = exports.RX_HTML_TAG = /<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s*\/>)/gi;
var RX_HTML_TAG_NAME = exports.RX_HTML_TAG_NAME = /<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s*\/>)/i;
var RX_HTML_TAG_CONTENT = exports.RX_HTML_TAG_CONTENT = /<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s*\/>)/i;
var RX_HTML_TAG_ATTRIBUTES = exports.RX_HTML_TAG_ATTRIBUTES = /<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s*\/>)/i;
var RX_HTML_TAG_ATTRIBUTE = exports.RX_HTML_TAG_ATTRIBUTE = /([a-z]+)="([^"]*)"/gi;
var RX_HTML_TAG_ATTRIBUTE_NAME = exports.RX_HTML_TAG_ATTRIBUTE_NAME = /([a-z]+)="([^"]*)"/i;
var RX_HTML_TAG_ATTRIBUTE_VALUE = exports.RX_HTML_TAG_ATTRIBUTE_VALUE = /([a-z]+)="([^"]*)"/i;
var RX_HTML_TAG_SELF_CLOSING = exports.RX_HTML_TAG_SELF_CLOSING = /<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s*\/>)/i;
var RX_HTML_TAG_OPENING = exports.RX_HTML_TAG_OPENING = /<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s*\/>)/i;
var RX_HTML_TAG_CLOSING = exports.RX_HTML_TAG_CLOSING = /<\/([a-z]+)>/i;
var RX_HTML_TAG_TEXT = exports.RX_HTML_TAG_TEXT = /<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s*\/>)/i;
var RX_HTML_TAG_TEXT_CONTENT = exports.RX_HTML_TAG_TEXT_CONTENT = /<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s*\/>)/i;
var RX_HTML_TAG_TEXT_ATTRIBUTES = exports.RX_HTML_TAG_TEXT_ATTRIBUTES = /<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s*\/>)/i;
var RX_HTML_TAG_TEXT_ATTRIBUTE = exports.RX_HTML_TAG_TEXT_ATTRIBUTE = /([a-z]+)="([^"]*)"/gi;
var RX_HTML_TAG_TEXT_ATTRIBUTE_NAME = exports.RX_HTML_TAG_TEXT_ATTRIBUTE_NAME = /([a-z]+)="([^"]*)"/i;
var RX_HTML_TAG_TEXT_ATTRIBUTE_VALUE = exports.RX_HTML_TAG_TEXT_ATTRIBUTE_VALUE = /([a-z]+)="([^"]*)"/i;
var RX_HTML_TAG_TEXT_SELF_CLOSING = exports.RX_HTML_TAG_TEXT_SELF_CLOSING = /<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s*\/>)/i;
var RX_HTML_TAG_TEXT_OPENING = exports.RX_HTML_TAG_TEXT_OPENING = /<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s*\/>)/i;
var RX_HTML_TAG_TEXT_CLOSING = exports.RX_HTML_TAG_TEXT_CLOSING = /<\/([a-z]+)>/i;
var RX_HTML_TAG_TEXT_TEXT = exports.RX_HTML_TAG_TEXT_TEXT = /<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s*\/>)/i;
var RX_HTML_TAG_TEXT_TEXT_CONTENT = exports.RX_HTML_TAG_TEXT_TEXT_CONTENT = /<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s*\/>)/i;
var RX_HTML_TAG_TEXT_TEXT_ATTRIBUTES = exports.RX_HTML_TAG_TEXT_TEXT_ATTRIBUTES = /<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s*\/>)/i;
var RX_HTML_TAG_TEXT_TEXT_ATTRIBUTE = exports.RX_HTML_TAG_TEXT_TEXT_ATTRIBUTE = /([a-z]+)="([^"]*)"/gi;
var RX_HTML_TAG_TEXT_TEXT_ATTRIBUTE_NAME = exports.RX_HTML_TAG_TEXT_TEXT_ATTRIBUTE_NAME = /([a-z]+)="([^"]*)"/i;
var RX_HTML_TAG_TEXT_TEXT_ATTRIBUTE_VALUE = exports.RX_HTML_TAG_TEXT_TEXT_ATTRIBUTE_VALUE = /([a-z]+)="([^"]*)"/i;
// --- File ---
// File path (basic, platform-independent)
var RX_FILE_PATH = exports.RX_FILE_PATH = /^(\/?[\w-]+)+\/?$/;
var RX_FILE_PATH_WINDOWS = exports.RX_FILE_PATH_WINDOWS = /^(?:[a-zA-Z]:)?[\\/](?:[^\\/]+[\\/])*[^\\/]+$/;
var RX_FILE_PATH_UNIX = exports.RX_FILE_PATH_UNIX = /^\/(?:[^/]+\/)*[^/]+$/;
var RX_FILE_PATH_MAC = exports.RX_FILE_PATH_MAC = /^\/(?:[^/]+\/)*[^/]+$/;
// --- JavaScript Identifiers ---
var RX_JS_IDENTIFIER = exports.RX_JS_IDENTIFIER = /^[$A-Z_][0-9A-Z_$]*$/i; //valid JavaScript identifier
// --- Whitespace ---
// Leading and trailing whitespace
var RX_LEADING_TRAILING_WHITESPACE = exports.RX_LEADING_TRAILING_WHITESPACE = /^\s+|\s+$/g;
// --- JSON ---
// JSON string
var RX_JSON_STRING = exports.RX_JSON_STRING = /"(\\u[a-fA-F0-9]{4}|\\[^u]|[^\\"])*"/;
var RX_JSON_NUMBER = exports.RX_JSON_NUMBER = /-?\d*\.?\d+/;
var RX_JSON_BOOLEAN = exports.RX_JSON_BOOLEAN = /true|false/;
var RX_JSON_NULL = exports.RX_JSON_NULL = /null/;
var RX_JSON_OBJECT = exports.RX_JSON_OBJECT = /{.*}/;
var RX_JSON_ARRAY = exports.RX_JSON_ARRAY = /\[.*]/;
var RX_JSON_VALUE = exports.RX_JSON_VALUE = /(?:"(\\u[a-fA-F0-9]{4}|\\[^u]|[^\\"])*"|true|false|null|-?\d*\.?\d+|{.*}|\[.*])/;
var RX_JSON_PAIR = exports.RX_JSON_PAIR = /"(\\u[a-fA-F0-9]{4}|\\[^u]|[^\\"])*":(?:"(\\u[a-fA-F0-9]{4}|\\[^u]|[^\\"])*"|true|false|null|-?\d*\.?\d+|{.*}|\[.*])/;
var RX_JSON_ARRAY_ELEMENT = exports.RX_JSON_ARRAY_ELEMENT = /(?:"(\\u[a-fA-F0-9]{4}|\\[^u]|[^\\"])*"|true|false|null|-?\d*\.?\d+|{.*}|\[.*),?/;
var RX_JSON_ARRAY_ELEMENT_LAST = exports.RX_JSON_ARRAY_ELEMENT_LAST = /(?:"(\\u[a-fA-F0-9]{4}|\\[^u]|[^\\"])*"|true|false|null|-?\d*\.?\d+|{.*}|\[.*),?/;
var RX_JSON_ARRAY_ELEMENT_FIRST = exports.RX_JSON_ARRAY_ELEMENT_FIRST = /(?:"(\\u[a-fA-F0-9]{4}|\\[^u]|[^\\"])*"|true|false|null|-?\d*\.?\d+|{.*}|\[.*),?/;
var RX_JSON_ARRAY_ELEMENT_MIDDLE = exports.RX_JSON_ARRAY_ELEMENT_MIDDLE = /(?:"(\\u[a-fA-F0-9]{4}|\\[^u]|[^\\"])*"|true|false|null|-?\d*\.?\d+|{.*}|\[.*),?/;
// --- Password ---
// Password (minimum 8 characters, at least one letter and one number)
var RX_PASSWORD = exports.RX_PASSWORD = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/;
var RX_PASSWORD_UPPERCASE = exports.RX_PASSWORD_UPPERCASE = /^(?=.*[A-Z])/;
var RX_PASSWORD_LOWERCASE = exports.RX_PASSWORD_LOWERCASE = /^(?=.*[a-z])/;
var RX_PASSWORD_NUMBER = exports.RX_PASSWORD_NUMBER = /^(?=.*\d)/;
var RX_PASSWORD_SPECIAL = exports.RX_PASSWORD_SPECIAL = /^(?=.*[!@#$%^&*])/;