js-清除首尾空白字符再进行空白匹配str.trim().match(...)

1.前言

先清除字符串首尾空白字符,再进行正则匹配。trim()确保清除字符串首尾空白字符串,match再进行正则匹配。

javascript 复制代码
const trimmedStr = str.trim();
const result = trimmedStr.match(/your-regex/);

2.代码

javascript 复制代码
function parseNameAndJob(str: string): { name: string; job: string } {
  // 处理 null、undefined、非字符串
  if (!str || typeof str !== 'string') {
    return { name: '-', job: '-' };
  }

  const trimmed = str.trim();

  // 特判:空字符串 或 仅为括号(中英文,允许中间有空格)
  if (trimmed === '' || /^[((]\s*[))]$/.test(trimmed)) {
    return { name: '-', job: '-' };
  }

  // 正则:匹配第一个左括号到第一个右括号之间的内容
  // - 姓名部分:任意字符(可为空)
  // - 职位部分:不包含右括号的任意字符(可为空)
  const match = trimmed.match(/^(.*?)\s*[((]\s*([^))]*)\s*[))]/);

  if (match) {
    const name = match[1].trim();
    const job = match[2].trim();

    // 如果姓名为空,则 name 设为 '-'
    // 否则保留姓名;job 为空则设为 '-'
    return {
      name: name === '' ? '-' : name,
      job: job === '' ? '-' : job
    };
  }

  // 未匹配到括号结构:整个字符串作为姓名
  return { name: trimmed, job: '-' };
}
  • ^:从开头匹配

  • (.*?):非贪婪捕获姓名(可为空)

  • \s*[((]:跳过空格,匹配左括号

  • ([^))]*)关键! 只匹配不包含右括号 的内容,确保在第一个右括号处停止

  • \s*[))]:跳过空格,匹配右括号

  • 不使用 $:避免因末尾空格或多余字符导致匹配失败

调用方法输出结果

javascript 复制代码
console.log(parseNameAndJob("(产品经理)"));
// 输出: { name: '-', job: '产品经理' }

console.log(parseNameAndJob("周杰()"));
// 输出: { name: '周杰', job: '-' }

console.log(parseNameAndJob("吴磊"));
// 输出: { name: '吴磊', job: '-' }
相关推荐
Wenweno0o17 小时前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
于慨17 小时前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
石小石Orz17 小时前
油猴脚本实现生产环境加载本地qiankun子应用
前端·架构
从前慢丶17 小时前
前端交互规范(Web 端)
前端
@yanyu66617 小时前
07-引入element布局及spring boot完善后端
javascript·vue.js·spring boot
CHU72903517 小时前
便捷约玩,沉浸推理:线上剧本杀APP功能版块设计详解
前端·小程序
chenjingming66617 小时前
jmeter线程组设置以及串行和并行设置
java·开发语言·jmeter
GISer_Jing18 小时前
Page-agent MCP结构
前端·人工智能
王霸天18 小时前
💥别再抄网上的Scale缩放代码了!50行源码教你写一个永不翻车的大屏适配
前端·vue.js·数据可视化
小领航18 小时前
用 Three.js + Vue 3 打造炫酷的 3D 行政地图可视化组件
前端·github