需要字母和数字 - regExp

时间:2015-08-01 11:56:43

标签: javascript regex

我想知道如何只需要字母和数字而不需要任何其他字符。因此字面意思[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并告诉我在问题开始时验证字符串的方法是什么。字符串中预期的字母和数字。

3 个答案:

答案 0 :(得分:4)

仅允许使用至少一个字母和至少一个数字的字母和数字:

/^(?=.*?\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

RegEx Demo

你不应该在你的正则表达式中使用.*,否则它将允许输入中的任何字符。

答案 1 :(得分:1)

你在伪寻找的是: START-ANCOR [a-zA-Z0-9] 0-> Inf时间,([a-zA-Z] [0-9] OR [0-9] [a-zA-Z]),[a- zA-Z0-9] 0-> Inf时间END-ANCOR

用文字开头,从你的郎开始,用你的郎结尾,并在字母和数字之间包含一个接缝,或者反过来

应该是这样的:

/^([a-z0-9]* (([a-z][0-9]) | ([0-9][a-z])) [a-z0-9]*)$/i.

答案 2 :(得分:0)

您可以在括号内组合多种类型的字符。因此,以下正则表达式应该起作用:

/ ^([A-Z0-9] +)$ / I。

^和$匹配字符串的开头和结尾,因此将测试整个字符串的条件。 [a-z0-9]使其仅匹配字母和数字。 +使它匹配一个或多个字符。并且"我"最后,如你所知,使它不区分大小写。