2013-01-31 118 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 
    } 
} 
相关问题