我试图弄清楚如何只需要字母和数字而不需要任何其他字符。所以从字面上看[a-z]
and ( \d
or [0-9]
)取决于对数字执行此操作的更好方法。
因此,如果我有一个需要验证的字符串:
$toValidate = 'Q23AS9D0APQQ2'; // It may start with letter or number, both cases possible.
然后如果我对其进行验证:
return /([a-z].*[0-9])|([0-9].*[a-z])/i.test($toValidate);
我用了一个i
在这里标记,因为用户可能输入小写或大写,这是用户偏好...因此正则表达式失败...它也接受特殊字符,因此这不是所需的效果。
通过上面的验证,这也通过了:
$toValidate = 'asdas12312...1231@asda___213-1';
然后我尝试了一些疯狂的事情,我什至不知道我做了什么,所以如果有人能告诉我除了正确答案之外,我将非常感激。
return /([a-z].*\d)+$|(\d.*[a-z])+$/i.test($toValidate);
这看起来效果很好。但是当我尝试在特殊字符后继续输入字母或数字时,它仍然验证为true
.
Example:
$toValidate = 'q2IasK231@!@!#_+123';
所以请帮助我理解regularExpressions
更好并告诉我验证问题开头的字符串的方法是什么。字符串中预期的字母和数字。
要仅允许包含至少一个字母和至少一位数字的字母和数字,请使用:
/^(?=.*?\d)(?=.*?[a-zA-Z])[a-zA-Z\d]+$/
正则表达式细分:
^ # start of input
(?=.*?\d) # lookahead to make sure at least one digit is there
(?=.*?[a-zA-Z]) # lookahead to make sure at least one letter is there
[a-zA-Z\d]+ # regex to match 1 or more of digit or letters
$ # end of input
正则表达式演示 https://regex101.com/r/dS0kX9/2
你不应该使用.*
在你的正则表达式中,否则它将允许输入中的任何字符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)