gpt4 book ai didi

javascript - 正则表达式删除所有前导和尾随特殊字符?

转载 作者:行者123 更新时间:2023-11-28 14:14:00 24 4
gpt4 key购买 nike

假设我在 javascript 中有以下字符串:

&a.b.c. &a.b.c& .&a.b.c.&. *;a.b.c&*. a.b&.c& .&a.b.&&dc.& &ê.b..c&

我想从所有单词中删除所有前导和尾随特殊字符(任何非字母数字或其他语言的字母)。

所以字符串应该看起来像

a.b.c a.b.c a.b.c a.b.c a.b&.c a.b.&&dc ê.b..c

请注意字母数字之间的特殊字符是如何留下的。最后一个 ê 也被留下。

最佳答案

这个正则表达式应该做你想要的。它寻找

  • 行首,或第 1 组中捕获的一些空格(^| +)
  • 一定数量的符号字符[!-\/:-@\[-``\{-~]*
  • 第 2 组中捕获的最小数量的非空格字符 ([^ ]*?)
  • 一定数量的符号字符[!-\/:-@\[-``\{-~]*
  • 后跟空格或行尾(使用正向前瞻)(?=\s|$)

仅用第 1 组和第 2 组(符号之间的间距和字符)替换匹配项。

let str = '&a.b.c. &a.b.c& .&a.b.c.&. *;a.b.c&*. a.b&.c& .&a.b.&&dc.& &ê.b..c&';
str = str.replace(/(^| +)[!-\/:-@\[-`\{-~]*([^ ]*?)[!-\/:-@\[-`\{-~]*(?=\s|$)/gi, '$1$2');
console.log(str);

请注意,如果您想单独保留一串标点符号(例如,如 Apple & Sauce 中所示),则应更改第二个捕获组以坚持存在一个或多个非标点符号。 -空格字符 (([^ ]+?)) 而不是无,并在标点符号字符的初始匹配后添加前瞻,以断言下一个字符不是标点符号:

let str = 'Apple &&& Sauce; -This + !That!';
str = str.replace(/(^| +)[!-\/:-@\[-`\{-~]*(?![!-\/:-@\[-`\{-~])([^ ]+?)[!-\/:-@\[-`\{-~]*(?=\s|$)/gi, '$1$2');
console.log(str);

关于javascript - 正则表达式删除所有前导和尾随特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58469258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com