attributed string swift alphanumeric

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