问题验证的ASP:用的RegularExpressionValidator UploadFile文件名
-
20-09-2019 - |
题
我在设置文件我想允许的所有文件类型的行:
jpeg|jpg|tiff|tif|png|gif|bmp|eps|wmf|emf|pdf|doc|docx|zip|rar|ppt|pptx|mdb|xls
我想有旁的FileUpload控制的RegularExpressionValidator,只允许这些文件。
我在事件pageLoad的设定正则表达式验证程序的ValidationExpression属性处理它。
我尝试:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string regex = "jpeg|jpg|tiff"; //A huge list of filetypes.
upFiles_RegularExpressionValidator.ValidationExpression =
@"^.*\.(" + regex +")$";
}
}
但它是大小写敏感的。 现在我唯一的问题是,使其不区分大小写。
解决方案
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string regex = "([jJ][pP][eE][gG])|([jJ][pP][gG])|([tT][iI][fF][fF])"; //A huge list of filetypes.
upFiles_RegularExpressionValidator.ValidationExpression =
@"^.*\.(" + regex +")$";
}
}
其他提示
如果您关闭客户端validion并且只使用服务器端验证,有一个.NET支持案例insensitivte算子(?i)该都可以使用。如果你想somethign,工程客户端和服务器端,您可能需要采取类似
[JJ] [PP] [EE] [千兆克]
为每个文件扩展名。不包括为每个扩展的代码,应该很容易推断模式
答案:
^.*\.(?i-s:pdf|exe)$
这意味着:
ValidationExpression = @"^.*\.(?i-s:pdf|exe)$"; //will match pdf PDF exe EXE
string regex = "jpeg|jpg|tiff|tif|png|gif|bmp|eps";
ValidationExpression = @"^.*\.(?i-s:file_types)$".Replace("file_types", regex);
这应该是一个非常有效的方式来验证的文件对一个动态可变的列表
仅供参考,我与这个的在线正则表达式生成器,一个惊人的免费工具!
在正则表达式正常工作与在服务器侧的的RegularExpressionValidator。当它试图做客户端验证,因为JavaScript的正则表达式的味道不知道如何处理这些故障问题上升“?我”(不区分大小写以JavaScript正则表达式用“我”来实现)。您可以通过添加这个脚本到您的网页解决这个问题。我觉得剧本相当直接。
<script type="text/javascript" language="javascript">
function RegularExpressionValidatorEvaluateIsValid(val)
{
var value = ValidatorGetValue(val.controltovalidate);
if (ValidatorTrim(value).length == 0)
return true;
var regex = null;
if(val.validationexpression.indexOf("(?i)")>=0)
{
regex = new RegExp(val.validationexpression.replace("(?i)",""),"i");
}
else
{
regex = new RegExp(val.validationexpression);
}
var matches = regex.exec(value);
return (matches != null && value == matches[0]);
}
</script>
如果你这样做验证服务器端使用.NET,你可以使用像
VB:
Dim re As New Regex("(jpg)|(gif)", RegexOptions.IgnoreCase)
re.IsMatch("image.jpg")
C#:
var re = new Regex("(jpg)|(gif)", RegexOptions.IgnoreCase);
re.IsMatch("image.jpg")
不隶属于 StackOverflow