English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
什么是正则表达式?
正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
swift 至今并没有在语言层面上支持正则表达式,可能在开发app时正则表达式使用的场景并不多。
封装
在 Cocoa 中我们可以使用 NSRegularExpression 来做正则匹配,所以我们在 NSRegularExpression 的基础上封装一个 RegularExpHelper 配匹一个字符串是否符合某个正则表达式。
struct RegularExpHelper { let RegularExp: NSRegularExpression init(_ pattern: String) throws { try RegularExp = NSRegularExpression(pattern: pattern, options: .caseInsensitive) } func match(inpuut: String) -> Bool { let matches = RegularExp.matches(in: inpuut, options: [], range: NSMakeRange(0, inpuut.count)) return matches.count > 0 } }
自定义 =~
有了封装好的 RegularExpHelper,我们就可以方便的自定义运算符了。
infix operator =~ : ATPrecedence precedencegroup ATPrecedence { associativity: none higherThan: AdditionPrecedence lowerThan: MultiplicationPrecedence } func =~ (input: String, RegularExp: String) -> Bool { do { return try RegularExpHelper(RegularExp).match(inpuut: input) } return false } }
definición de operador
associativity (asociatividad)
es el orden de cálculo cuando se presentan múltiples operadores del mismo tipo
Precedencia
luego podemos usarlo
if "[email protected]" =~ "^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.2,6})$" { print("Cumple con las reglas del correo electrónico") } print("No cumple con las reglas del correo electrónico") }
Atención
Resumen
Esto es todo el contenido de este artículo. Espero que el contenido de este artículo tenga un valor de referencia para su aprendizaje o trabajo. Si tienen alguna pregunta, pueden dejar comentarios para intercambiar, gracias por el apoyo a los tutoriales de alarido.
Declaración: El contenido de este artículo se ha obtenido de la red, es propiedad de los autores originales, el contenido ha sido contribuido y subido por usuarios de Internet por su propia iniciativa. Este sitio no posee los derechos de propiedad, no ha sido editado artificialmente y no asume ninguna responsabilidad legal relacionada. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, por favor reemplace # con @ para denunciar, y proporcione la evidencia relevante. Una vez que se compruebe, este sitio eliminará inmediatamente el contenido sospechoso de infracción de derechos de autor.)