2010-06-21 2 views
2
난 단지에 문자열을 MyString을 정규식 할 필요가

는이 '을 # $의 %!'정규 표현식 : 0-9 AZ의 AZ 또는 이들의 * + -/=^_`{|} ~

    ?
  • 0-9
  • AZ 또는 AZ
  • 이러한 문자 * + -/=^_`을 # $ %의 &! '{|} ~?. 지금까지 내가 [a-zA-Z0-9]이이 처음이 개 많은 ListItems를 위해 잘 작동

    new Regex("[a-zA-Z0-9]").IsMatch(myString); 
    

    :

이 내 코드 라인이다. 현재 메타 문자와 아무 곳에도 가지 않는 것보다 내 머리카락을 찢어 버립니다.

도움을 주시면 감사하겠습니다. 감사합니다. . 데이브

+0

무엇 문제는 무엇입니까? 너 탈출 했니? – leppie

+0

나는 그들을 \로 이스케이프 (escaping) 해보고 런타임에 인식 할 수없는 시퀀스를 얻는다. – Dave

답변

4

안녕 당신은 당신이 라인의 끝에 시작과 일치 할 필요는 simple.but 매우 당신의 문자열 만 나열된 문자를 원하는 경우

new Regex("^[a-zA-Z0-9'!#$%&'*+/=?^_`{|}~.-]*$").IsMatch(myString); 
3
"[a-zA-Z0-9'!#$%&'*+/=?^_`{|}~.-]" 

확인하는 것이 ("-") 마이너스 기호는 중요한 사람을 탈출 한 바와 같이,

2

메타 문자가 괄호 사이 잘되어 [] 순서의 마지막 문자 수. 또한 대시는 반드시 시퀀스의 마지막 것이어야합니다.

new Regex("[a-zA-Z0-9'!#$%&'*+/=?^_`{|}~-]").IsMatch(myString); 
+0

아니요. 그. 어떤 문자도 허용되지 않으므로 모두 작동하지 않습니다. – Dave

1

시도 :

var re = "[a-zA-Z0-9" + Regex.Escape("'!#$%&'*+-/=?^_`{|}~.") + "]"; 
+0

'Regex.Escape'는 문자 클래스에서 안전하지 않습니다 - http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.escape를 이스케이프 처리하지 않습니다. aspx. 또한 필요없는 문자를 이스케이프 처리하지만 괜찮습니다. – Kobi