正则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两个密码字段?