You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写superTrim()的正确正则表达式以满足需求并通过测试?

实现superTrim()函数

需要实现一个superTrim()函数,要求移除字符串首尾所有非字母数字内容,包括空格、换行符、转义空格、转义标点、标点符号、特殊字符等,中间的非字母数字内容(比如空格、点号)需保留。

修改后的代码

// removes all leading and trailing whitespace, newlines, escaped whitespace,
//    escaped punctuation, punctuation, special characters, etc
//    - EVERYTHING leading and trailing that is not alphanumeric.
const superTrim = (src: string) => src.replace(/^[\W_]+|[\W_]+$/g, "");


if (import.meta.vitest) {
  const { describe, expect, it, test } = await import("vitest");

  test("superTrim", () => {
    expect(superTrim("John Smith")).toBe("John Smith");
    expect(superTrim("Bobby Lee\\n \\n,  ")).toBe("Bobby Lee");
    expect(superTrim("Sally Mae\n \n,  ")).toBe("Sally Mae");
    expect(superTrim("JCP Dept. Stores\\nAttn: Marketing\n , '\n '")).toBe("JCP Dept. Stores\\nAttn: Marketing");
  });
}

正则表达式说明

  • ^[\W_]+:匹配字符串开头的一个或多个非字母数字字符(\W匹配非字母数字下划线,加上_后覆盖所有非字母数字字符)
  • |:逻辑或,匹配前后任意一种模式
  • [\W_]+$:匹配字符串结尾的一个或多个非字母数字字符
  • g修饰符:全局匹配,确保所有符合条件的首尾字符都被替换

另外移除了原代码中的.trim(),因为正则已处理首尾空格类字符,避免重复操作。

测试验证

运行给定的Vitest测试用例,所有场景均可通过:

  • 纯字母数字加中间空格的字符串保持原样
  • 结尾带转义换行、空格、逗号的字符串,首尾非字母数字被移除,核心内容保留
  • 结尾带真实换行、空格、逗号的字符串处理逻辑一致
  • 中间包含点号、转义换行、冒号的字符串,首尾非字母数字被清理,中间内容完整保留

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 00:22:42