具有不同忽略字符的正则表达式掩码



我有一系列字符串,看起来像这样:

foobar | ABC Some text 123
barfoo | DEF Some te 456

我想掩盖它,以便我得到结果

ABC123
DEF456

分别。中间的文本将始终是一个子字符串Some text其中可能包含数字(例如 S0m3 t3xtS0m3 t3)。它将始终是从左侧开始的子字符串,因此永远不要me te.

很明显,我需要用类似的东西启动正则表达式

(?<=| )[A-Z]{3}

这让我ABCDEF,但我不知道如何有效地连接字符串末尾的数字。

有没有办法用一个表达式做到这一点?

请参阅 http://regexr.com?375u8

(?<=| )([A-Z]{3}).*(d{3})

这将为您提供 A-Z 范围内的三个字符和两个捕获组中的三个数字,允许您使用这些组将两者连接到所需的输出:$1$2

如果您的Some text之间包含三个数字,这甚至会起作用。

如果要将所有内容替换为两个捕获组,请在正则表达式前面添加.*

.*(?<=| )([A-Z]{3}).*?(d{3})

另一个JavaScript版本

[
 'foobar | ABC Some text 123',
 'barfoo | DEF Some te 456'
].map(function(v) { 
  return v.replace(/^.*| ([A-Z]{3}) .* (d{3})$/, '$1$2'); 
})

["ABC123", "DEF456"]

最新更新