【发布时间】:2015-10-24 00:59:49
【问题描述】:
我试图弄清楚如何只需要字母和数字而不需要任何其他字符。因此,从字面上看,[a-z] 和(\d 或 [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。
例子:
$toValidate = 'q2IasK231@!@!#_+123';
所以请帮助我更好地理解regularExpressions,并告诉我在我的问题开头验证字符串的方法是什么。字符串中应包含字母和数字。
【问题讨论】:
-
如果您不想允许任意字符,请停止使用
.,它明确是任何字符。 -
@DaveNewton - 我明白了,现在我在 StacksOverflow 上的某个地方找到的原始正则表达式中没有解释这一点。谢谢。
标签: javascript regex