我正在尝试构建一个正则表达式,可以找到必须沿着侧面特殊字符包含数字和字母数字值的模式。 我找到了一个处理这种正则表达式但没有特殊字符的答案。
如何在正则表达式中包含特殊字符,包括: ^ $ =()_“'[\ @ ?
^([0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+)[0-9a-zA-Z]*$
你能解释一下吗?
正则表达式测试员:http://regexlib.com/RETester.aspx
谢谢。
作为一个解决方案,我找到了这个正则表达式:^(?=.*\d)(?=.*[a-zA-Z]).{4,8}$
也许它可以帮到你。
答案 0 :(得分:2)
为什么这么复杂!?
enum { numeric = 1; alpha = 2, special = 4; }
bool check(const std::string& s) {
for(std::string::size_type i = 0; i < s.size; ++i) {
if(is_numeric(s[i])) result |= numeric;
if(is_alpha(s[i])) result |= alpha;
if(is_special(s[i])) result |= special;
if(result == numeric | alpha | special)
return true;
}
return false;
}
打字更多但脑损伤更少
答案 1 :(得分:1)
你的正则表达式由两部分组成,两者都必须捕获一条完整的行,因为它们位于行首(^
)和行尾($
)之间:
|
)组合在一起。第一个正则表达式是一个或多个数字([0-9]+
),后跟一个或多个字母([a-zA-Z]+
)。这个正则表达式与相反的正则表达式相同:一个或多个字母后跟一个或多个数字。[0-9a-zA-Z]*
)