我希望正则表达式符合以下条件,
例如
提前致谢。 这是我的代码
NSPredicate *regex = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"^(?[0-9])(?[a-zA-Z]){7,}$"];
BOOL isvalid = [regex evaluateWithObject:string];
抱歉,我找不到以前用过的正则表达式。
答案 0 :(得分:6)
您已接近评论中第二个示例中的前瞻。你所拥有的是一个数字[0-9]
,但它说它必须从那个数字开始(不检查你的字母)。
试试这个:
^(?=.*[a-zA-Z\d].*)[a-zA-Z\d!@#$%&*]{7,}$
使用your examples listed我做了一些测试。正则表达式是你找到的两者的组合。
预测并查看是否至少有一个字母或数字
(?=.*[a-zA-Z\d].*)
。通过让.*
允许在字符串中的任何一点传递检查,而不仅仅是开头。然后你说正则表达式需要在它继续之前完成检查。可以把它想象成一个if子句,如果字符串在任何一点都包含一个字母或数字,那就继续。
一旦确定有一个字母或数字(整个字符串中至少有一个),请匹配字母,数字和特殊字符集。至少7. [a-zA-Z\d\!@#\$%&\*]{7,}
。这个部分很简单,因为你只需设置规则并说,至少给我7个。
答案 1 :(得分:3)
对于至少一件事,你可以使用lookahead。你似乎已经弄明白了其余的(字符类,重复,锚点)。
/^(?=.*[a-z0-9])[a-z0-9!@#$%&*.]{7,}$/i