正则expression式的字母数字,至less有1个数字和1个字符
我有一个正则expression式
/ ^([A-ZA-Z0-9] +)$ /
这只允许字母数字,但如果我只插入数字或字符(S),然后也接受它。 我希望它的工作,如字段应该只接受字母数字值,但该值必须至less包含1个字符和1个数字。
为什么不首先应用整个testing,然后添加个性testing的字符和数字? 无论如何,如果你想在一个正则expression式中完成这一切,请使用积极的向前看:
/^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$/ 这RE会做:
 /^(?:[0-9]+[az]|[az]+[0-9])[a-z0-9]*$/i 
RE的解释:
-  符合以下任一条件:
- 至less有一个数字,然后是一个字母或
- 至less有一个字母,然后是一个数字加上
 
- 任何剩余的数字和字母
-   (?:...)创build一个未被引用的组
-   /i是忽略情况标志,所以az==a-zA-Z。
我可以看到其他响应者已经给你一个完整的解决scheme。 正则expression式的问题在于难以维护/理解。
更简单的解决scheme是保留现有的正则expression式,然后创build两个新的正则expression式来testing“至less一个字母”和“至less一个数字”。
所以,testing这个:
 /^([a-zA-Z0-9]+)$/ 
那么这个:
 /\d/ 
那么这个:
 /[AZ]/i 
如果你的string通过了所有三个正则expression式,你就有了你需要的答案。
该解决scheme接受至less1个数字和至less1个字符:
 [^\w\d]*(([0-9]+.*[A-Za-z]+.*)|[A-Za-z]+.*([0-9]+.*)) 
也许有点晚,但这是我的RE:
 /^(\w*(\d+[a-zA-Z]|[a-zA-Z]+\d)\w*)+$/ 
说明:
  \w* – > 0或更多的字母数字,在开头 
  \d+[a-zA-Z]|[a-zA-Z]+\d – >一个数字+一个字母或一个字母+一个数字 
  \w* – > 0或更多的字母数字,再次 
我希望这是可以理解的
虽然接受的答案是正确的,我发现这个正则expression式更容易阅读:
 REGEX = "([A-Za-z]+[0-9]|[0-9]+[A-Za-z])[A-Za-z0-9]*" 
而一个负面检查的想法。
 /^(?!\d*$|[az]*$)[az\d]+$/i 
-   ^(?!开始前瞻如果string没有
-   \d*$只包含数字|要么
-   [az]*$只包含字母
-   [az\d]+$匹配一个或多个字母或数字,直到$结束。
看看这个regex101演示
  ( i标志打开无匹配匹配 : az匹配a-zA-Z ) 
- 处理Mongoosevalidation错误 – 在哪里以及如何?
- Javascript:如何validationMM-DD-YYYY格式的date?
- 使用java.util.Scannervalidationinput
- Ruby on Rails:在模型或数据库中validation会更好吗?
- javax.validation.ValidationException:HV000183:无法加载“javax.el.ExpressionFactory”
- MVC3删除ModelState错误
- 如何在JSF中执行validation,如何在JSF中创build自定义validation器
- 包含没有src的图像的有效方法是什么?
- 如何通过ajaxvalidation两个密码字段?