【前端技巧】常用正则表达式工具类

本文提供了六个JavaScript函数,用于处理字符串中的括号统一、去除开头结尾多余字符、替换特定内容间的字符、去除重复符号等。这些工具函数对于文本清洗和格式化非常有用,特别是对于处理包含多种括号和特殊符号的文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@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,
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端Outman

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值