0

我正在尝试构建一个正则表达式,它可以找到必须同时包含数字和字母数字值以及特殊字符的模式。我找到了一个处理这种类型的正则表达式但没有特殊字符的答案。

如何在正则表达式中包含特殊字符,包括: ^$=()_"'[\@ ?

^([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}$

也许它可以帮助你。

4

2 回答 2

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;
}

打字多一点,但脑损伤少

于 2013-10-29T14:09:07.177 回答
1

您的正则表达式由两部分组成,两者都必须捕获完整的行,因为它们位于行首 ( ^) 和行尾 ( $) 之间:

  1. ([0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+) 这由两个正则表达式 or'd ( |) 一起组成。第一个正则表达式是一个或多个数字 ( [0-9]+),后跟一个或多个字母 ( [a-zA-Z]+)。此正则表达式与相反大小写的正则表达式进行或运算:一个或多个字母后跟一个或多个数字。
  2. 第二组说上面后面跟着一个正则表达式零个或多个字母或数字([0-9a-zA-Z]*
于 2013-10-29T13:59:08.053 回答