2013-01-31 16 views

Odpowiedz

6

Musisz uciec łącznikowi:

"^[[email protected]#$&()\\-`.+,/\"]*$" 

Jeśli nie uciec to oznacza szereg znaków, jak a-z.

+0

Dzięki za szybką odpowiedź. To pomogło. –

0

Łączniki w klasach znaków oznaczają zakres, o ile nie zostały zmienione, ani na początku ani na końcu klasy znaków. Jeśli chcesz zawierać myślniki, to zwykle dobry pomysł, aby umieścić je na przodzie więc nawet nie trzeba się martwić o ucieczce:

^[[email protected]#$&()`.+,/\"]*$ 

przy okazji, _ rzeczywiście wchodzą między ) i grawis w ASCII:

http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters

0

w swojej klasie postać )-' jest interpretowany jako zakres w taki sam sposób, jak na przykład a-z, dlatego odnosi się do dowolnego znaku z dziesiętnym kodem ASCII z 41 ) do 96 '.

Od _ ma kod 95, to jest w zakresie, a zatem dozwolone, podobnie jak <, =, > itp

Aby tego uniknąć można albo uciec -, tj \-, lub umieścić na - albo początek lub koniec klasy postaci:

/^[[email protected]#$&()`.+,/"-]*$/ 

nie ma potrzeby, aby uciec " i zauważ, że ponieważ używasz * kwantyfikator, e Ciąg mpty również przejdzie test.

0

Użyj tego wyrażenia, to zadziała.

/\ S ([0-9] [a-zA-Z] [\ sa-zA-Z] [0-9] *) ([A-Za-z0-9! @ # $ % _ '' "" \^\ &. * - \] {1,20}) $/

0

jak o tym .. co umożliwia specjalne znaki oraz jak alfa numeryczny

"[-~]*$" 
0

? Ponieważ nie wiem, ile znaków specjalnych istnieje, trudno jest sprawdzić, czy ciąg znaków zawiera znak specjalny na białej liście. Skuteczniejsze może być sprawdzenie, czy ciąg zawiera tylko alfabet lub cyfry.

dla Kotlin przykład

fun String.hasOnlyAlphabetOrNumber(): Boolean { 
    val p = Pattern.compile("[^a-zA-Z0-9]") 
    if (p.matcher(this).matches()) return false 
    return true 
} 

dla swift4

func hasOnlyAlphabetOrNumber() -> Bool { 
    if self.isEmpty { return false } 
    do { 
     let pattern = "[^a-zA-Z0-9]" 
     let regex = try NSRegularExpression(pattern: pattern, options: .caseInsensitive) 
     return regex.matches(in: self, options: [], range: NSRange(location: 0, length: self.count)).count == 0 
    } catch { 
     return false 
    } 
} 
Powiązane problemy