2012-02-21 2 views
5

어디서나REGEX - ... 내가 정규식 사람이 아니다, 그래서 난 그냥 캔트이 주위에 내 머리를 얻을, 약간의 도움을 필요로하는 문자열

를 특수 문자를 일치 내가 등록 페이지를 작성하고 asp.net을 사용하고 있습니다 유효성 검사기. 한 단어 안에 특수 문자를 매치하는 정규 표현식 검사기가 필요합니다. "ID에 적어도 하나의 특수 문자가 있어야합니다."라는 요구 사항을 충족시킵니다. 허용되는 문자는 다음과 같습니다. ! "# $으로 % & '() * +, - /:;.? < => @ [\]^ _`{|} 배치와 ~

다시 한번, 내가 중학교 이요하는 데 문제가 이 순간에이 물건 주위에 내 머리 ... 들어

는 지금은

[\[\]\^\$\.\|\?\*\+\(\)\\~`[email protected]#%&-_+={}'""<>:;, ]{1,} 

을 가지고 있지만 그것은 어떤 이유로뿐만 아니라 번호와 일치하고, 때로는 단어의 시작 부분에 문자가 일치하지 않습니다. ..

So 제발 누군가가 저를 도울 수 있다면 ...

+0

속기가 있습니다 –

+0

그냥 사이드 참고 :. 당신은 ASP.NET 회원을 고소하는 경우, 당신은을 사용할 수 있습니다 ['MinRequiredNonAlphanumericCharacters'] (http://msdn.microsoft.com/en-us/library/system.web.security.membership .minrequirednonalphanumericcharacters.aspx) -property를 사용하여 특수 문자가 암호에 입력되도록합니다. –

+0

@TimSchmelter - Microsoft를 고소하지 않는 이유 :) 멤버 자격 공급자에서이 기능을 사용할 수없는 이유는이 유효성 검사가 선택적이기 때문입니다. 클라이언트 요구 사항에 따라이 기능을 설정하거나 해제 할 수 있습니다. 앱의 모든 고객에게 적용 할 수 있어야합니다. 사이드 노트를 주셔서 감사합니다.하지만 .. – Alex

답변

4

'-'와 '!'를 이스케이프해야합니다.

[\[\]\^\$\.\|\?\*\+\(\)\\~`\[email protected]#%&\-_+={}'""<>:;, ]{1,} 
+0

그래 .. 간과 ... 그러나 어떤 이유로 문자열 "asdf3!"doe 귀하의 표현을 사용하여 유효성을 검사하고 싶지 않아 ... 어쩌면 그게 뭔가 관련이있다. ... – Alex

+0

탈출해야 할 것 같습니다! 뿐만 아니라 – David

2

할 쉬울 것 반대

^[0-9]|[a-z]|[A-Z]$

+1

캔트를 사용하면 스페이드 나 통화 기호와 같이 필요한 문자 세트에 정의되지 않은 문자와 일치합니다 ... – Alex

+2

그런 식으로, 아마도이 소리가 더 좋을 수도 있습니다 [^ a-zA-Z0- 9] – BigMan

+0

공백을 제외하는 것이 더 좋습니다.'[^ a-zA-Z0-9 \ s] –

-4

일치하지 않는 당신은 여기 정규식에 대해 자세히 알아볼 수 있습니다 경우 특수 문자가 있습니다 http://regex.learncodethehardway.org/

그렇게하기가 어렵지 않습니다.

행운을 빌어 요.

+0

링크를 이용해 주셔서 감사합니다. – Alex

+0

rtfm nice하지만 실제로는 – Letseatlunch

+2

RTFM 답변이 아닙니다. – toobulkeh

1

asp.net 또는 유효성 검사 전문가가 아닙니다. 그러나 문자 클래스는 []처럼 이스케이프 된 특정 문자 만 필요합니다. 대시 -은 일련의 문자를 나타냅니다. 리터럴로 사용하는 경우 이스케이프 처리하여 아무 데나 넣을 수도 있고 클래스의 처음 또는 끝에 넣을 수도 ([-aa] 또는 [aa-]) 리터럴로 처리 할 수 ​​있습니다. 또한 클래스 시작 부분의 캐럿은 '음의'클래스 의미를 나타내며이 문자 ([^not me])를 제외한 모든 문자를 나타냅니다.

특정 엔진에 고유 한 특수 구문을 사용하는 클래스에는 다른 구문이있을 수 있습니다 (.NET은 이러한 방식 일 수 있습니다. 확실하지 않습니다). 어떤 시퀀스는 하위 클래스를 트리거합니다.

내 테스트 케이스는 특수 문자를 사용하는 asp.net 검사기입니다. 그들은 내가 잘 모르고있을 수도 있습니다. 두 가지 모두 빈 입력을 검증하지 않는 것처럼 보입니다. 정규식이 아닐 수도 있습니다.

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
     ControlToValidate="TextBox1" ErrorMessage="Input is not valid." 
     ValidationExpression="^.*[\[\]^$.|?*+()\\~`[email protected]#%&\-_+={}'&quot;&lt;&gt;:;,\ ].*$"></asp:RegularExpressionValidator> 
    <asp:Button ID="Button1" runat="server" Text="Button" /> 

이 문제는 보안 문제를 해결하는 것으로 보입니다. <+'alpha char'에 유의하십시오. 여기서 'alpha'는 내가 생각하는 몇 가지 표준에 따라 유효한 유니 코드 문자의 범위를 나타냅니다.

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
     ControlToValidate="TextBox1" ErrorMessage="Input is not valid." 
     ValidationExpression="^(?!.*&lt;(?:/|[A-Za-z_:])).*[\[\]^$.|?*+()\\~`[email protected]#%&\-_+={}'&quot;&lt;&gt;:;,\ ].*$"></asp:RegularExpressionValidator> 
    <asp:Button ID="Button1" runat="server" Text="Button" /> 

이 방법을 사용하지 않으면 무시하십시오.

0

비트를 약간 잘라 내고 문자 범위를 일치시킬 수 있습니다.

[^\p{L}] 

당신이 1 개 이상 일치해야하는 경우 귀하의 경우에 특정한 나는이 가정은, 다음이 잘 작동 (예를 들어,이 모든 특수 (및 인쇄) 문자 (포함 유니 코드) 문자와 일치 + 정규식 연산자가 나는 특수 문자를 포함하는 ID와 암호를 요구하는 웹 사이트를 싫어 {1,}

[^\p{L}]+ 
관련 문제