具有特殊字符的字母和数字组合的正则表达式

use*_*659 -3 regex

我想要以下条件的正则表达式,

  1. 字符串中至少应有一个字符或数字.
  2. 组合可能包含特殊字符,如!@#$%&*.
  3. 字符串长度应大于7.

例如.

  1. test1234
  2. 测试@ 1234
  3. 1234Test

提前致谢.我的代码

NSPredicate *regex = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"^(?[0-9])(?[a-zA-Z]){7,}$"];

BOOL isvalid = [regex evaluateWithObject:string];
Run Code Online (Sandbox Code Playgroud)

抱歉,我找不到以前用过的正则表达式.

Wal*_*lls 7

您已接近评论中第二个示例中的前瞻.你有一个正在寻找一个数字[0-9],但它说它必须从那个数字开始(不检查你的字母).

试试这个: ^(?=.*[a-zA-Z\d].*)[a-zA-Z\d!@#$%&*]{7,}$

使用列出的示例我用它做了一些测试.正则表达式是你找到的两个的组合.

  1. 前瞻并查看是否至少有一个字母或数字 (?=.*[a-zA-Z\d].*).让.*你允许检查在字符串中的任何一点传递,而不仅仅是开头.然后你说正则表达式需要在它继续之前完成检查.将其视为if子句,如果字符串在任何点包含字母或数字,请继续.

  2. 一旦确定有一个字母或数字(整个字符串中至少有一个),请匹配字母,数字和特殊字符集.至少7 [a-zA-Z\d\!@#\$%&\*]{7,}.这个部分很简单,因为你只是设置规则并说,给我至少7个.