我正在尝试使用swift中的Regex验证用户名。我找到了匹配字符串的方法,如果没有世界或数字字符,但是,我需要找到在正则表达式中添加表达式的方法,该表达式告诉我字符串长度介于2...15
个字符范围之间
我该怎么做?
let name = Anthony
if let match = name.rangeOfString("[\\W]|[\\d]{2,15}$", options: .RegularExpressionSearch) {
print(match)
}
答案 0 :(得分:1)
您可以使用^(?:[\\p{L}\\p{M}]|\\d){2,15}$
匹配任何字符或数字为2到15个字符的字符串。
请注意,\p{L}
与Unicode字母匹配,\p{M}
与变音符号匹配。 \d
将匹配一个数字。当我们将它们全部放入一个字符类时,我们匹配一个(预先组合的)字母或一个数字,2到15次。
如果字符串是< 2和> 15 -----!{2,15}
,表达式需要匹配
您可以使用"^(?:[\\p{L}\\p{M}]|\\d)$|^(?:[\\p{L}\\p{M}]|\\d){16,}$"
:
let name = "n"
let valid_block = "(?:[\\p{L}\\p{M}]|\\d)"
if let match = name.rangeOfString("^" + valid_block + "$|^" + valid_block + "{16,}$", options: .RegularExpressionSearch) {
print(match)
}