import Foundation
let pattern = ##"^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[\w!@#$%]{6,}$"##
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = ##"""
INVALID:
abcdefg
abc
abcdefghji
abCDEFghij
1234efghij
abcde6789
ab!67fghij
ab)=
VALID:
8vB0k3XiLp
VvsfM5he#X
d10STfJ$gA
R1cIX7mn8T
6EDNTbda%z
IKkED0#zYS
1S#9duFcHe
KP1fN3jTwJ
iRS1YB@nfI
Vp1yRxwuGD
fajT2ukURg
9tY8#HkojR
@LHTbA3C7J
%HLK6EqANV
#vZR6in5KJ
!WwjH3K65v
%5WOIrCv@R
emfpLRE5oD
zREw13rcJn
#NU42oxYa0
$oujwK%xR7
1YH#uOFQlV
L936DS2ynR
ab4RAVCZHv
9xwiZmDSAd
eZjPHg3B8i
OANw!p8yxH
J6efM@hxNz
qvmefZI3Wn
fH9wXGK8ZI
eHcl3qRYGS
i8we0zpOvr
1kpSFgeIKA
p8eM@FtZ9n
rj95zq!E3I
lkDKt@486w
7!j50lyxgB
%vBCxLq6Ym
@ky$u9iSGm
%QD9jA6Lm@
JolTzf7gUr
cSRe%v46Or
oJVlc#Gdn3
G!%NF0XESp
76dMFmbf%X
3JQlSRiXLj
Y$!%WCgti0
D1k$#ThiqG
M6tPY$XzQp
@gUcrWm7zA
1xc#hwGj0D
s8p#S$ZkWP
sIP3dQL#4j
bBLEnvlFI3
isSeP4AC%w
1OsdI4iCjR
@p#qm$NA9Z
guPjtIp5!i
a84ONQRZXY
homJ9T6w80
$!uh09kaUO
CTIX7vsalJ
2CASR7IUyY
Tr1jl!oKPF
2%ar6kMCZe
m4TrLJC!cD
3E#mZ!jrdn
oZIa$xmDU8
9wXxBaJAyz
0%dNQfyr$e
ez#IcxH8SX
MF$m6wile%
ilo3FURh9t
d71hgGe5Vo
KEr9u7CRtP
CfUE4Fj$Ju
aXSG5wIQor
VTk2fmDlbx
GHxBwpt0dN
mYS2Q1zFi!
qD0KiayFz4
hT9FrGQ$dS
5eKrEvnBZA
gA$fXPUd2#
Eoz8uqBART
7wKEo6jJGX
1p4Zj7Ssk2
K#MX8Q61dr
L%S2Kh7Q@r
fwD6zy$NM@
zyJPri5u7N
MyAI!j2iz%
9blWdD5!w@
iw6Ef3dBLk
JMYD1iHol2
#M1OUJ0VDi
e@78BCHLI%
oeD1F!4ifz
pCblno9zyJ
FJKErsBTp6
"""##
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let matches = regex.matches(in: testString, range: stringRange)
var result: [[String]] = []
for match in matches {
var groups: [String] = []
for rangeIndex in 1 ..< match.numberOfRanges {
let nsRange = match.range(at: rangeIndex)
guard !NSEqualRanges(nsRange, NSMakeRange(NSNotFound, 0)) else { continue }
let string = (testString as NSString).substring(with: nsRange)
groups.append(string)
}
if !groups.isEmpty {
result.append(groups)
}
}
print(result)
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression