2013-04-22 24 views
1

我想正则表达式来排除字符串的开始和结束的特殊字符排除在

我想这个代码,但它不工作的字符串的开头和末尾的特殊字符

String strFileName = Regex.Replace(FileName, @"[^A-Za-z0-9-_ ]", ""); 

<asp:RegularExpressionValidator ID = "Regular" 
      ValidationGroup = "valGroup" runat="server" ControlToValidate = "txtreport" 
      ErrorMessage = "Please enter valid data." 
      ValidationExpression = "([a-z]|[A-Z]|[0-9])*"> 
</asp:RegularExpressionValidator> 
+5

定义“特殊”。另外,我想要一匹小马。 – 2013-04-22 11:12:25

+0

如果您正在验证网络输入,您通常应该*包含*您想要的字符,而不是*不包括*您不想要的字符。这样,如果你犯了一个错误,它不会在你的程序中产生可利用的错误。 – 2013-04-22 11:15:44

+0

@Jake strFileName = Regex.Replace(文件名,@ “[^ A-ZA-Z0-9-_]”, “”); Such 2013-04-22 11:17:01

回答

4

你几乎没有,只需添加锚领带的搭配字符串的开头或结尾,并告诉正则表达式引擎匹配的不仅仅是一个性格比较:

String strFileName = Regex.Replace(FileName, 
    @"^    # Match the start of the string 
    [^A-Z0-9_ -]+ # followed by one or more characters except these 
    |    # or 
    [^A-Z0-9_ -]+ # Match one or more characters except these 
    $    # followed by the end of the string", 
    "", RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace); 

另外,您ValidationExpression很奇怪。

ValidationExpression="[a-zA-Z0-9]*" 

将意味着相同,但不允许_<space>-,你的“特殊字符替代品”被忽略。所以你可能想要使用

ValidationExpression="[a-zA-Z0-9_ -]*" 
+0

谢谢。其工作 但我想只有在开始和结束的字符串排除特殊字符。 – Such 2013-04-22 12:02:45

+0

@Sachin:对,当然。那么,你不再需要验证表达式了,是吗? – 2013-04-22 14:14:54

+0

那么如何解决这个问题,请帮忙 – Such 2013-04-23 04:18:57