需要字母和数字 - regExp

dvl*_*den 3 javascript regex

我试图弄清楚如何只需要字母和数字而不需要任何其他字符。所以字面上[a-z]和(\d[0-9])取决于什么是更好的数字方式。

因此,如果我有一个需要验证的字符串:

$toValidate = 'Q23AS9D0APQQ2'; // It may start with letter or number, both cases possible.
Run Code Online (Sandbox Code Playgroud)

然后,如果我对此进行了验证:

return /([a-z].*[0-9])|([0-9].*[a-z])/i.test($toValidate);
Run Code Online (Sandbox Code Playgroud)

i在这里使用了一个标志,因为它可能是用户输入的小写或大写,这是用户偏好......所以正则表达式失败......它也接受特殊字符,所以这不是预期的效果。

通过上面的验证,这也通过了:

$toValidate = 'asdas12312...1231@asda___213-1';
Run Code Online (Sandbox Code Playgroud)

然后我尝试了一些疯狂的事情,我什至不知道我做了什么,所以如果有人能告诉我正确答案,我会非常感激。

return /([a-z].*\d)+$|(\d.*[a-z])+$/i.test($toValidate);
Run Code Online (Sandbox Code Playgroud)

这似乎工作得很好。但是当我尝试在特殊字符后继续输入字母或数字时,它仍然验证为true.

例子:

$toValidate = 'q2IasK231@!@!#_+123';
Run Code Online (Sandbox Code Playgroud)

所以请帮助我regularExpressions更好地理解并告诉我在我的问题开头验证字符串的方法是什么。字符串中需要的字母和数字。

anu*_*ava 6

要仅允许包含至少一个字母和至少一位数字的字母和数字,请使用:

/^(?=.*?\d)(?=.*?[a-zA-Z])[a-zA-Z\d]+$/
Run Code Online (Sandbox Code Playgroud)

正则表达式细分:

^               # 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
Run Code Online (Sandbox Code Playgroud)

正则表达式演示

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