How to fetch words from text with regex in Swift iOS? -
i have string:
let inputtext:string = "myemail_at_gmail.com_organizer@company.com" i want in output: myemail@gmail.com
so need write 1st pattern matches rule:
<email_prefix>_at_<domain>_organizer@company.com
after can combine:
<email_prefix>@<domain>
i use following class:
class regex { let internalexpression: nsregularexpression let pattern: string init(_ pattern: string) { self.pattern = pattern var error: nserror? self.internalexpression = nsregularexpression(pattern: pattern, options: .caseinsensitive, error: &error)! } func test(input: string) -> bool { let matches = self.internalexpression.matchesinstring(input, options: nil, range:nsmakerange(0, count(input))) return matches.count > 0 } } and regex syntax:
if regex("^\\w+_at_\\w+_organizer@company.com$") // id doesn't work .test(inputtext) { let result:string = inputtext.split("_at_")[0] + "@" + inputtext.split("_at_")[1].split("_organizer@company.com")[0] } this 1 doesn't work: "^\\w+_at_\\w+_organizer@company.com$"
this 1 works not completed: "\\w+_organizer@company.com$"
please help,
ok, found solution:
since work email, need validate email name , email domain separatly:
let inputtext:string = "myemail_at_gmail.com_organizer@company.com" if regex("^[a-z0-9a-z._%+-]+_at_[a-za-z0-9.-]+\\.[a-za-z]{2,4}_organizer@company.com$") .test(inputtext) { let result:string = inputtext.split("_at_")[0] + "@" + inputtext.split("_at_")[1].split("_organizer@company.com")[0] print(result) // myemail@gmail.com }
Comments
Post a Comment