我试图使用正则判处以动态捕获字符串中的所有数字,例如1234-12-1234或1234-123-1234,而不知道每个字符串中会发生的字符数量部分。我能够通过以下表达式使用正面的表达来捕获这一点:[0-9]*(?= - (。但是,当我尝试将数字替换为XS时,以使最后一个破折号之前发生的每个数字被X替换为X时,Regex不会返回数字1:1的X。相反,每个部分返回两个X。我该如何让正则返回以下内容:
1234-123-1234 -> XXXX-XXX-1234
1234-12-1234 -> XXXX-XX-1234
而不是电流
1234-123-1234 -> XX-XX-1234
?
链接到演示
问题是,通过在数字匹配后直接放置 *,将用一个X替换一个以上的数字。然后,零数字将被单个X替换。任何数量的数字都将有效地替换为两个X。
而是使用此:
[0-9](?=。* - (