2013-04-22 50 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