C# Regex for Web.config Rewrite Url



我有以下网址 www.localproject.com:843/user/validate/eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9eyJ0ZW1wVXJsIjoie1wiQ3VzdG9tZXJJZFwiOjEsXCJDb3Vyc2VJZFwiOjEsXCJUb2tlblwiOm51bGwsXCJFeHBpcnlcIjpcIjIwMTgtMDQtMThUMTc6MzU6MTMuOTQ2MjM2NCswNTowMFwifSJ9uvm7jZ3us5UFa1hqh4bod2cSamcxF2rRUbfxs7DHQs

验证后,我只需要从中提取 10 到 30 个字符,包括数字等。例如,我只需要这个

eyJhbGciOiJodHRwOi8vd3d

正则表达式应该是什么?我尝试跟随,但它不起作用

^api/user/validate/(^([a-zA-Zd]){50})

尝试

api/user/validate/(.{23})

可以看到它在这里工作 - https://regex101.com/r/Xr6Ueo/1

您可以使用

正则表达式或Substring执行此操作。 如果字符串存储在 web.config 中,您仍然可以使用 ConfigurationManager 访问它。 我建议将不需要的零件从Uri中取出。 这样,一旦部署到 prod,事情崩溃的可能性就会降低。

var input = new Uri("www.localproject.com:843/user/validate/eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9eyJ0ZW1wVXJsIjoie1wiQ3VzdG9tZXJJZFwiOjEsXCJDb3Vyc2VJZFwiOjEsXCJUb2tlblwiOm51bGwsXCJFeHBpcnlcIjpcIjIwMTgtMDQtMThUMTc6MzU6MTMuOTQ2MjM2NCswNTowMFwifSJ9uvm7jZ3us5UFa1hqh4bod2cSamcxF2rRUbfxs7DHQs");
var environmentAgnosticPath = input.Segments[input.Segments.Length - 1];//take just the part after /validate
//example output: eyJhbGciOiJodHRwOi8vd3d
//I don't know what you mean by 10 - 30 since the example is 23 characters
var resultFromSubstring = environmentAgnosticPath.Substring(0,23);
var pattern = @"[A-Za-z0-9]{10,23}";
Regex regex = new Regex(pattern);
var resultFromRegex = regex.Match(environmentAgnosticPath).Value;
一般来说,正则表达式

101 是弄清楚正则表达式部分的绝佳游乐场。