Для простоты, вероятно, проще всего сделать это с двумя вызовами замены regex, хотя вы могли бы переписать его в один, используя перегрузку Replace
с MatchEvaluator
(это было бы немного странно ).
using System.Text.RegularExpressions;
// ...
var str = Regex.Replace(Regex.Replace(urlPart, @"[^a-z0-9\- ]/i", ""), @"[ \-]+", "-").ToLower();
Надеюсь, это поможет.