【发布时间】:2021-01-26 06:54:21
【问题描述】:
我需要找到一种使用正则表达式的方法来验证我作为参数得到的字符串
这必须是一个仅由以下字符组成的单词:[A-Z] / [a-z] / [0-9] / "-" / "." /“_”/“~”
我尝试过的
var pattern = @"^[a-zA-Z0-9~\-_.]\S{42,128}$";
if (!Regex.IsMatch(authorizationRequest.CodeChallenge, pattern))
{
return new PkceResponse
{
IsValid = false,
Error = OIDCErrorCodes.InvalidRequest,
ErrorDescription = "Code Challenge contains invalid characters",
ParameterName = "code_challenge"
};
}
但我的测试因以下输入而失败:
longenoughlongenoughlongenoughlongenoughlongenoughlongenoughlongenoughlongenoughAABSC__-......~~~.~-!
我错过了什么?
【问题讨论】:
-
@John 限制空格,据我了解
-
我认为您错过了
\S,它匹配任何非空白字符,包括末尾的!。 -
我在我的系统上运行了你的代码,它可以工作并且模式匹配。怎么了?