gpt4 book ai didi

javascript - 需要字母和数字 - 正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:03:03 24 4
gpt4 key购买 nike

我想弄清楚如何只需要字母和数字而不需要任何其他字符。所以从字面上看 [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 并告诉我在问题开头验证字符串的方法是什么。字符串中应包含字母和数字。

最佳答案

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

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

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

关于javascript - 需要字母和数字 - 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31761565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com