2016-11-17 2 views
0

J'essaye de construire une expression régulière pour détecter la chaîne contenant des caractères alphanumériques et des caractères spéciaux mais ainsi pour que je n'ai pas trouvé le bon quoi faire. Voici mon code:Swift: Expression régulière pour détecter les caractères non alphanumériques

var str = "asda~dd.ASD98ASD09ASD098ASD098ADS908" 
let myRegEx = "^[a-z]{7}\\.[A-Z0-9]{28}$" 
if (str.rangeOfString(myRegEx,options: .RegularExpressionSearch) != nil) { 

     str = "itwork.yes" 
} 

Tout vous sait comment puis-je construire mon expression régulière pour détecter des caractères non alphanumériques?

J'apprécierai vraiment votre aide.

Répondre

0

Comment utiliser rangeOfCharacter?

// Choose character set and add all characters that you want to check for besides the alphanumeric characters 
let set = CharacterSet.alphanumerics.union(CharacterSet(charactersIn: ".\\")) 

// Check for the range of the characters in the string 
let range = str.rangeOfCharacter(from: set, options: .regularExpression) 

C'est probablement l'une des façons les plus propres de le faire.

EDIT:

Si vous voulez détecter seulement non-caractères alphanumériques, utilisez set.inverse au lieu de simplement set lorsque vous appelez la fonction de gamme.

+0

Comment pouvez-vous détecter la longueur de la sous-chaîne? – user2924482

+0

@ user2924482 Si vous voulez juste savoir, _if_ la chaîne contient un de ces caractères, en vérifiant! = Nil est suffisant, sinon vous ne pouvez pas utiliser cette méthode, car la longueur est toujours une! Il ne recherche qu'un seul caractère, que l'ensemble que vous avez spécifié contient – borchero