@Author:Outman
@Date:2023-02-01
常用正则工具类
/**
* 括号统一替换
* @desc 多种不同的括号统一转换为半角小括号
* @param {String} str
* @return {String}
* @example [{(())}] -> (((())))
*/
const UNI_BRACKETS_2_PAR = (str) => {
// 定义多种括号(左右括号分离)
const REG_UNI_L_BRACKET = /[\(|\{|\[|【|〔]/g;
const REG_UNI_R_BRACKET = /[\)|\}|\]|】|〕]/g;
return str.replace(REG_UNI_L_BRACKET, "(").replace(REG_UNI_R_BRACKET, ")");
};
/**
* 开头结尾去除多余字符
* @desc 删除开头结尾处 “半角小括号/数字/汉字/字母” 之外的内容
* @param {String} str
* @return {String}
* @example ~!@#¥%……&*(文本)~!@#¥%……&* -> (文本)
*/
const TRIM_BE_NO_PNCA = (str) => {
// 正则匹配开头结尾非 “半角小括号/数字/汉字/字母”内容
const REG_TRIM_BE_NOBRACKET =
/^([^\u4e00-\u9fa50-9a-zA-Z\(]*)(.*?)([^\u4e00-\u9fa50-9a-zA-Z\)]*)$/g;
return str.replace(REG_TRIM_BE_NOBRACKET, "$2");
};
/**
* 替换指定内容之间多个字符为指定字符
* @desc 替换中文字符和左书名号之间各类符号为分号
* @param {String} str
* @return {String}
* @example 新的内容~!@#¥%……&*《前端开发》 -> 新的内容;《前端开发》
*/
const CHANGE_CHAR_LQM_2_SEM = (str) => {
const REG_CHAR_LQM_2_SEM =
/([\u4e00-\u9fa5]*)([^\u4e00-\u9fa50-9a-zA-Z\(\)《》]+)(《[^《》]*》)/g;
return str.replace(REG_CHAR_LQM_2_SEM, "$1;$3");
};
/**
* 去除指定内容之间多个指定字符
* @desc 替换分号和左书名号之间的中文字符
* @param {String} str
* @return {String}
* @example ;依照《xxx的法律法规》 -> ;《xxx的法律法规》
*/
const REMOVE_SEM_LQM_CHAR = (str) => {
const REG_SEM_LQM_REMOVE_CHAR = /(\;|\;)([\u4e00-\u9fa5]*)(《)/g;
return str.replace(REG_SEM_LQM_REMOVE_CHAR, "$1$3");
};
/**
* 开头结尾去除非中/英小括号字符
* @desc 删除开头结尾处 “中/英的小括号” 之外的内容
* @param {String} str
* @return {String}
* @example *&……!@#¥%……&*(内容)*&……!@#¥%……&* -> (内容)
*/
const TRIM_BE_NO_CEP = (str) => {
const REG_TRIM_BE_NOBRACKET =
/^([^\u4e00-\u9fa50-9a-zA-Z\(\(]*)(.*?)([^\u4e00-\u9fa50-9a-zA-Z\)\)]*)$/g;
return str.replace(REG_TRIM_BE_NOBRACKET, "$2");
};
/**
* 符号去重
* @desc 出现连续两个及两个以上相同的符号自动删减成一个
* @param {String} str
* @return {String}
* @example 苹果、、、香蕉 -> 苹果、香蕉
*/
const TRIM_REPEAT_SYMBOL = (str) => {
const REG_TRIM_REPEAT = /([^\u4e00-\u9fa50-9a-zA-Z\u2026])\1+/g;
return str.replace(REG_TRIM_REPEAT, "$1");
};
export {
UNI_BRACKETS_2_PAR,
TRIM_BE_NO_PNCA,
CHANGE_CHAR_LQM_2_SEM,
REMOVE_SEM_LQM_CHAR,
TRIM_BE_NO_CEP,
TRIM_REPEAT_SYMBOL,
};