2013-01-31 159 views

回答

6

你需要躲避連字符:

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

如果你不逃避它那麼就意味着一個字符範圍,像a-z

+0

感謝您的快速響應。這有幫助。 –

0

在你的性格類)-'被解釋爲範圍相同的方式,例如, a-z,因此它指任何帶有十進制ASCII代碼41 )至96 '的字符。

由於_具有代碼95,它在該範圍內,並因此允許的,甚至<=>

爲了避免這種情況您可以逃避-,即\-,或把在-開始或字符類的結尾:

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

沒有必要逃避",並請注意,由於您使用的是*量詞,電子空字符串也將通過測試。

0

使用此正則表達式,這將工作。 ([0-9] [a-zA-Z] [\ sa-zA-Z] [0-9] *)([A-Za-z0-9!@#$ %_ '' 「」 \^\ &。* - \] {1,20})$/

0

這個怎麼樣..它允許特殊字符,以及字母數字

"[-~]*$" 
0

?因爲我不知道有多少特殊字符存在,所以很難通過白名單檢查包含特殊字符的字符串。檢查字符串只包含字母或數字可能更有效。

爲科特林例如

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

爲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 
    } 
} 
相關問題