2016-11-17 438 views
0

我试图建立一个正则表达式来检测包含字母数字字符和特殊字符的字符串,但是对于我没有找到正确的方法来做它。这里是我的代码:Swift:检测非字母数字字符的正则表达式

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

     str = "itwork.yes" 
} 

任何的你知道我怎么能建立我的正则表达式来检测非字母数字字符?

我真的很感谢你的帮助。

回答

0

如何使用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) 

这可能是最干净的方法之一。

编辑:

如果你想只检测非字母数字字符,调用范围功能时使用set.inverse而不是简单地set

+0

你如何检测子串的长度? – user2924482

+0

@ user2924482当你只想知道,如果字符串包含任何这些字符,检查!= nil就足够了,否则你不能使用这个方法,因为长度总是一个!它只搜索单个字符,您指定的集合包含该字符 – borchero