Extract number at end of string in C#

Use this regular expression:

\d+$

// RegexOptions.RightToLeft – is optional, but will increase performance
var result = Regex.Match(input, @"\d+$", RegexOptions.RightToLeft).Value;

or one-liner without regex:

var result = input[^input.Reverse().TakeWhile(char.IsDigit).Count()..];

or more efficient way:

int numberOfDigitsAtEnd = 0;
for (var i = input.Length - 1; i >= 0; i--)
{
    if (!char.IsDigit(input[i]))
    {
        break;
    }

    numberOfDigitsAtEnd++;
}
        
var result = input[^numberOfDigitsAtEnd..];

Leave a Comment