OM *_*ity 43 javascript regex validation
我有一个正则表达式
/^([a-zA-Z0-9]+)$/
这只允许使用字母数字,但如果我只插入数字或只插入字符,那么它也接受它.我希望它工作,因为字段应该只接受字母数字值,但该值必须至少包含1个字符和1个数字.
phi*_*hag 91
为什么不首先应用整个测试,然后为字符和数字添加单独的测试?无论如何,如果你想在一个正则表达式中完成所有操作,请使用正向前瞻:
/^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$/
Run Code Online (Sandbox Code Playgroud)
Rob*_*b W 17
这个RE会做:
/^(?:[0-9]+[a-z]|[a-z]+[0-9])[a-z0-9]*$/i
Run Code Online (Sandbox Code Playgroud)
RE的解释:
(?:...)
创建一个未引用的组/i
是ignore-case标志,所以a-z
== a-zA-Z
.Pau*_*lor 14
我可以看到其他响应者给了你一个完整的解决方案.正则表达式的问题在于它们难以维护/理解.
一个更简单的解决方案是保留现有的正则表达式,然后创建两个新的正则表达式来测试"至少一个字母"和"至少一个数字".
所以,测试一下: -
/^([a-zA-Z0-9]+)$/
Run Code Online (Sandbox Code Playgroud)
然后这个: -
/\d/
Run Code Online (Sandbox Code Playgroud)
然后这个: -
/[A-Z]/i
Run Code Online (Sandbox Code Playgroud)
如果你的字符串通过了所有三个正则表达式,你就得到了你需要的答案.
虽然接受的答案是正确的,但我发现这个正则表达式更容易阅读:
REGEX = "([A-Za-z]+[0-9]|[0-9]+[A-Za-z])[A-Za-z0-9]*"
Run Code Online (Sandbox Code Playgroud)
小智 5
此解决方案接受至少1个数字和至少1个字符:
[^\w\d]*(([0-9]+.*[A-Za-z]+.*)|[A-Za-z]+.*([0-9]+.*))
Run Code Online (Sandbox Code Playgroud)
接受的答案不起作用,因为它不允许输入特殊字符。
它对我来说非常完美。
^(?=.*[0-9])(?=.*[a-zA-Z])(?=\S+$).{6,20}$
谢谢你。
归档时间: |
|
查看次数: |
109690 次 |
最近记录: |