2009-05-07 6 views

Odpowiedz

20

Czy próbowałeś tego?

[^~,] 

Teraz wykluczyć znaki nie w klawiaturze, wierzę, trzeba je wszystkie uwzględnić.

[a-zA-Z0-9\t\n ./<>?;:"'`[email protected]#$%^&*()\[\]{}_+=|\\-] 

Który prawie to obejmuje (nawet jeśli wygląda na szalony sposób na załatwienie spraw). Może definicja problemu może pomóc dodać więcej materiałów do wykluczenia na pierwszej liście [^~,] niż spróbuj utworzyć ogromną listę wszystkich znaków na klawiaturze.

+0

Jednak pozwoli to na niektóre specjalne znaki, które nie są w keyboadzie, które mogą pojawić się przypadkowo, robiąc kopiuj i wklej z jakiegoś tekstu. –

4

Nie powiedzieć w jakim języku/narzędzie używasz, ale w Javie pójdę z tym regex:

"[\\p{Print}&&[^~,]]" 

To przecięcie dwóch zestawach: wszystkie drukowanie znaków ASCII, a wszystkie znaki nie są to tyldy ani przecinki.

3

Musiałem to zrobić dla regex do pracy:

"[^~,][^~,]*" 

ponieważ [^~,] neguje ~ i ,

[^~,]* oznacza w zero lub wiele kopii ~ i , (to jest bezużyteczne dla naszego przypadku)

i umieszczając [^~,][^~,]* dostaje się do zanegowania jedną lub więcej kopii ~ lub ,

+4

Istnieje specjalny kwantyfikator dla "jednego lub więcej": '[^ ~,] +' – Teejay

0

Reg-Ex dla wszystkich obsługiwanych kluczowych znaków Nadzorcza pracowała dla mnie:

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

Aby wyjątkiem '~' i '' znaków:

/^[[email protected]?#"$%&:';()*\+\/;\-=[\\\]\^_{|}<>` ]+$/ 
Powiązane problemy