2016-11-17 26 views
0

我建立一个正则表达式来检测,如果符合以下字符串,但它不工作更换子。这是我的代码:斯威夫特:使用正则表达式不工作

var str = "asdasdd.ASD98ASD09ASD098ASD098ADS908" 
let commsRegex = "\\D[a-z]{7,}.[^a-zA-Z0-9]{28,}" 

if (str.rangeOfString(commsRegex,options: .RegularExpressionSearch) != nil) { 

     str = "itwork.yes" 
     } 

你们谁都知道我在做什么错了?

我会很感激你的帮助

+1

尝试这样' “^ [A-Z] {7} \\。[A-Z0-9] {28} $”' –

+1

@LeoDabus这个伟大工程。问如果我asdasdd添加〜SDD不起作用什么可以修改,以能够检测“和〜sdd.ASD98ASD09ASD098ASD098ADS908”例如 – user2924482

+0

是否需要〜是在一个特定的位置(即第7个字符组的中间)'“[ AZ] {3}〜[AZ] {3} \\。[A-Z0-9] {28} $ “'如果不是'”[AZ〜] {7} \\。[A-Z0-9] { 28} $“' –

回答

2

你REG-EX似乎是不正确的,特别是这部分:

[^ A-ZA-Z0-9]

的通知粗体^,这意味着比赛中的字符在AZ,az或不和0-9。我怀疑你想从你的正则表达式中删除这个字符。

此外,我不确定\\D,这将匹配任何非数字,但您的字符串以7个字符开头,似乎匹配下一部分,也许应该删除以及如果您期望该字符串以匹配正则表达式。

+1

是的。另外,未能逃避'''字符(如Leo所示)也是一个问题。另外,我认为他列入了'^'来尝试将字符串的开头匹配,所以它不是这么多的“删除”了'^'因为只是将它移动到模式的开始,之前的'['和']'。 – Rob