2013-04-27 2 views
0

"^ $ /() |? + [] {"메타 문자를 차단하는 서버 측 유효성 검사를 수행하려고합니다. 누구든지이 문제에 대해 약간의 통찰력을 제공합니다. 나는이 새로운 오전 :/VB에서 서버 측 유효성 검사

Imports System.Text.RegularExpressions 

Partial Class Default2 
Inherits System.Web.UI.Page 

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 

    If Regex.IsMatch(TextBox3.Text, "^$\/()|?+[]{}><") Then 
     Label1.Text = "Invalid input" 

    End If 
End Sub 
End Class 

ERROR (TextBox3 입력 걸리는 ASP를 textboxe입니다) :

문자열 ^$\/()|?+[]{}>< 정규식 메타 문자이기 때문이다
Exception Details: System.ArgumentException: parsing "^$\/()|?+[]{}><" - Unterminated  [] set. 
+0

"작동하지 않음"을 정의하십시오. 또한,'form1'은 무엇을 의미합니까? –

+0

왜'form1.InnerText'를 사용하고 있습니까? 그것이 무엇을 기대할 것입니까? – ajakblackgoat

답변

0

.

If Regex.IsMatch(TextBox3.Text, Regex.Escape("^$\/()|?+[]{}><")) Then 
     Label1.Text = "Invalid input" 
    End If 

업데이트] 답변 :

방법 1 :

이 방법은 텍스트가 정규식 메타 문자가 포함되어 있는지 확인하기 위해 사용 정규식 당신은 정규식 함수에 전달하기 전에 이스케이프 할 필요가

메타 문자는 문자 클래스 [...] 안에 넣어야합니다. 따라서 일부 문자 만 이스케이프 처리해야합니다 (예 : ^, \]).

If Regex.IsMatch(TextBox1.Text, "[\^$\\/()|?+[\]{}><]") Then 
     ' Invalid input 
    Else 
     ' Valid 
    End If 

방법 2 : 사용 IndexOfAny 문자열 기능

이 방법은 정규식 그래서 탈출 할 필요가 없습니다 사용하지 않습니다.

If TextBox1.Text.IndexOfAny("^$\/()|?+[]{}><".ToCharArray) > -1 Then 
     ' Invalid input 
    Else 
     ' Valid 
    End If 
+0

감사합니다. ajakblackgoat, TextBox3에 해당 문자 중 하나를 넣을 때 Label1이 "잘못된 입력"을 표시하지 않는 이유를 알고 있습니까? – DDDD

+0

입력 텍스트가 정확한 정규식 패턴과 일치해야하기 때문입니다. 유효성 검사를 수행하는 두 가지 방법을 포함하도록 위의 내 대답을 편집했습니다. – ajakblackgoat

관련 문제