nsattributedstring swift 3
Compruebe si una cadena es alfanumérica en Swift (5)
Una solución moderna de Swift 3 y 4.
extension String {
func isAlphanumeric() -> Bool {
return self.rangeOfCharacter(from: CharacterSet.alphanumerics.inverted) == nil && self != ""
}
func isAlphanumeric(ignoreDiacritics: Bool = false) -> Bool {
if ignoreDiacritics {
return self.range(of: "[^a-zA-Z0-9]", options: .regularExpression) == nil && self != ""
}
else {
return self.isAlphanumeric()
}
}
}
Uso:
"".isAlphanumeric() == false
"Hello".isAlphanumeric() == true
"Hello 2".isAlphanumeric() == false
"Hello3".isAlphanumeric() == true
"Français".isAlphanumeric() == true
"Français".isAlphanumeric(ignoreDiacritics: true) == false
Esto funciona con idiomas distintos al inglés, permitiendo caracteres diacríticos como è y á, etc. Si desea ignorarlos, use la bandera " ignoreDiacritics: true
".
En Swift, ¿cómo puedo verificar si una String
es alfanumérica, es decir, si contiene solo uno o más caracteres alfanuméricos [a-zA-Z0-9]
, excluyendo las letras con [a-zA-Z0-9]
diacríticos, por ejemplo, é.
Esta expresión regular utilizada para comprobar que la cadena contiene al menos 1 alfabeto + al menos 1 dígito junto con 8 caracteres.
"^(?=.*[A-Za-z])(?=.*//d)[A-Za-z//d]{8,}$"
Sentí que la respuesta aceptada utilizando expresiones regulares era concreta pero una solución bastante pesada. Podrías comprobarlo de esta manera también en Swift 3.0:
if yourString.rangeOfCharacter(from: CharacterSet.alphanumerics.inverted) != nil {
return "Username can only contain numbers or digits"
}
extension String {
/// Allows only `a-zA-Z0-9`
public var isAlphanumeric: Bool {
guard !isEmpty else {
return false
}
let allowed = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
let characterSet = CharacterSet(charactersIn: allowed)
guard rangeOfCharacter(from: characterSet.inverted) == nil else {
return false
}
return true
}
}
XCTAssertFalse("".isAlphanumeric)
XCTAssertFalse("climate change".isAlphanumeric)
XCTAssertFalse("Poüet".isAlphanumeric)
XCTAssertTrue("Hawking2018".isAlphanumeric)
extension String {
var isAlphanumeric: Bool {
return !isEmpty && range(of: "[^a-zA-Z0-9]", options: .regularExpression) == nil
}
}
"".isAlphanumeric // false
"abc".isAlphanumeric // true
"123".isAlphanumeric // true
"ABC123".isAlphanumeric // true
"iOS 9".isAlphanumeric // false