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(/<-- correct regex here --> /gm, "").trim();
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");
});
}
我确实发现了一些类似但不同的现有问题,我认为一个新的问题是有道理的。我可以迭代字符串标识标记以返回一个切片,但这似乎是正则表达式的解决方案。
2条答案
按热度按时间13z8s7eq1#
你只需要捕获并返回你想要的部分:
Regex捕获组:
^(\\+[0-9a-zA-Z]|[^0-9a-zA-Z])*
在字符串的开头,匹配文字
\
一次或多次,后跟一个字母数字,或者任何一个非字母数字,尽可能多地匹配零次或多次(贪婪)。(.*?)
* 你寻找的那片 *任何东西和一切,留在中间(非贪婪)。
([^0-9a-zA-Z]|\\+[0-9a-zA-Z])*$
与1相同,但锚定在字符串的末尾,
|
(OR)正好相反,以保持对称uhry853o2#
您可以使用此规律性来满足您的要求:
(^[\W\\n]*)|([\W\\n]*$)