我要求对文件上传控件进行多次验证。我现在有以下代码:
<asp:Button id="btnUploadFile" class="ms-ButtonHeightWidth" runat="server" OnClick="UploadFile_Click" Text="Upload File"></asp:Button>
<asp:RequiredFieldValidator ID="InputFileValidator" ControlToValidate="InputFile" Text="You must specify a value for the required field" runat="server" />
我需要添加 ^(?!.. )(?!。 ..)(?=。 [^。] $)[^ \“ #%&amp; :&lt;&gt;?\ / {{}}〜{1,128} $ here的正则表达式验证以及必填字段验证程序。我该怎么办?
答案 0 :(得分:3)
<强>更新强>
你可能会改编正则表达式以允许反斜杠到文件名并禁止它们在文件名中,但这种野兽的复杂性可能不值得花时间和精力来构建它。
由于原始正则表达式用于验证用户正在键入文件名的文本框(而不是操作系统生成名称的文件输入),我认为更好的操作方法是使用{{1相反,控制并在<asp:CustomValidator>
上拆分值以获得更易于解析的块。
这种方法的主要优点是,您可以将复杂的正则表达式分解为多个更简单(更容易理解)的正则表达式,并针对文件名一次测试一个。
\
有一点需要注意的是,文件名块在 <script type="text/javascript">
var validateFile = function validateFile(sender, args) {
'use strict';
var fileWithPath, //split on backslash
fileName = fileWithPath[fileWithPath.length - 1], //grab the last element
containsInvalidChars = /["#%&*:<>?\/{|}~]/g, //no reason to include \ as we split on that.
containsSequentialDots = /[.][.]+/g, //literal .. or ... or .... (etc.)
endsWithDot = /[.]$/g, // . at end of string
startsWithDot = /^[.]/g, // . at start of string
notValid = false, //boolean for flagging not valid
valid = fileName.length > 0 && fileName.length <= 128;
notValid = containsInvalidChars.test(fileName);
notValid = notValid || containsSequentialDots.test(fileName);
notValid = notValid || endsWithDot.test(fileName);
notValid = notValid || startsWithDot.test(fileName);
args.IsValid = valid && !notValid;
};
</script>
<asp:FileUpload ID="InputFile" runat="server" />
<asp:RequiredFieldValidator ID="rqfvInputFile" runat="server" ControlToValidate="InputFile" ErrorMessage="File is required"></asp:RequiredFieldValidator>
<asp:CustomValidator ID="cstvInputFile" runat="server" ControlToValidate="InputFile" ClientValidationFunction="validateFile" ErrorMessage="File is not a sharepoint file"></asp:CustomValidator>
<asp:Button ID="Button1" runat="server" Text="Button" />
上被拆分,这可能不是Unix或Mac系统的路径分隔符。如果您还需要在这些客户端上运行此功能,则您可能需要拆分\
或\
,您可以使用此功能:
/
<强> ORIGINAL:强>
添加var filePath = args.Value.split(/\\|\//g); //not tested.
控件并将<asp:RegularExpressionValidator>
属性设置为文件上传器控件。
您可以根据需要使用尽可能多的验证器控件指向单个输入。
只需设置相应的属性(例如ControlToValidate
中的ValidationExpression
),并确保<asp:RegularExpressionValidator>
属性指向要验证的输入。
示例:
ControlToValidate
您可能还想查看Validation groups