将 [0-9] 替换为 0[0-9]

nic*_*oum 2 .net c# regex

我想知道是否有办法在每个 1 位数字前面添加 0 使用regex.

输入字符串是由“-”分隔的 1-3 个数字的列表(即28, 12-56, 67-6, 45-65-46)。

我遇到的两个问题是:

  1. 匹配所有可能的 1 位数字,而不对以下各项进行单独检查:^[0-9]-, -[0-9]-, ^[0-9]&,-[0-9]&
  2. 添加 0 而不删除任何其他内容。所以把:Regex.Replace(input, "^[0-9]-","0")变成这样的东西:Regex.Replace(input, "^[0-9]-","^0[0-9]-")

Tot*_*oto 5

  • 搜索:(?<!\d)(\d)(?!\d)
  • 代替0$1

在哪里:

  • (?<!\d)是一个消极的回顾,确保我们在比赛之前没有数字。
  • (\d)$1是一个捕获组,在替换部分中引用。
  • (?!\d)是一个消极的前瞻,确保我们在比赛后没有数字。

请参阅环顾四周以获取信息。

这会将前面或后面没有其他数字的数字替换为0+ 该数字。

Regex.Replace(input, @"(?<!\d)(\d)(?!\d)","0$1")
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,在 Javascript 中,这也有效:`var s = s.replace(/(?&lt;!\d)(\d)(?!\d)/g,'0$1');`。我能够将“1/1/2021”之类的内容设为“01/01/2021”,并且它也可以正确处理“12/1/2020”和“1/12/2020”等字符串,在数字之前添加 0 前缀,创建类似 XX/XX/XXXX 的格式。 (2认同)