保留前 3 个字符并删除其余字符的正则表达式

RegEx that keeps the first 3 characters and deletes the rest

我有一个包含字母或数字和破折号的标识符。 我想做的是保留第一个破折号之前的前 3 个字母并删除其余字母,然后保留第一个破折号之后的 2 个第一个字母。

例如,我有以下 ID:

9D3236A9-B496-4597-87E4-3A3FB69D07BF

输出 ID 应为:9D3B445873A3

我试过:

^.{3}\-

但是没有任何反应。你能帮忙吗?

您可以使用此 demo

中给出的正则表达式
(^.{3})[a-z0-9A-Z]*((?>-).{2})[a-z0-9A-Z]*((?>-).{2})[a-z0-9A-Z]*((?>-).{2})[a-z0-9A-Z]*((?>-).{2})[a-zA-Z0-9]*

您可以使用

^([A-Za-z0-9]{3})[A-Za-z0-9]*|-([A-Za-z0-9]{3})[A-Za-z0-9]*$|-([A-Za-z0-9]{2})[A-Za-z0-9]*

替换为</code>。见 <a href="https://regex101.com/r/IkiOer/4/" rel="nofollow noreferrer">regex demo</a>.</p> <p><strong>详情</strong></p> <ul> <li><code>^ - 字符串的开头

  • ([A-Za-z0-9]{3}) - 第 1 组(替换中的</code>):3 个字母数字字符</li> <li><code>[A-Za-z0-9]* - 0+ 个字母数字
  • | - 或者
    • - - 一个连字符
    • ([A-Za-z0-9]{3}) - 第 2 组(替换中的</code>):3 个字母数字字符</li> <li><code>[A-Za-z0-9]* - 0+ 个字母数字
    • $ - 字符串结尾
  • |
    • - - 一个连字符
    • ([A-Za-z0-9]{2}) - 第 3 组(替换中的</code>):2 个字母数字字符</li> <li><code>[A-Za-z0-9]* - 0+ 个字母数字。