Javascript正则表达式:检查字符串是否是字母数字并且它包含一个字母(至少)

时间:2018-01-07 15:37:25

标签: javascript regex

字符串长度可以是4到12个字符。 它可能包含仅字母和数字,但必须包含至少1个数字

我需要用一个正则表达式来解决这个问题。

我尝试过类似的事情:

 /^(?=.*[a-z]*)(?=.*[0-9]+).{4,12}$/i

这不会接受少于4个或超过12个字符,它还会检查字符串是否包含数字,但显然由于。*部分不合适。 我无法弄清楚如何排除所有非字母数字字符。

任何帮助将不胜感激!

提前致谢!

1 个答案:

答案 0 :(得分:1)

我认为你的模式很接近,但我会用这个:

/^(?=.*[0-9])[a-z0-9]{4,12}$/i

你需要的唯一前瞻是断言有一个数字。没有要求有任何字母,所以不要为此添加断言。然后,匹配任何字母数字字符4到12次。



console.log(/^(?=.*[0-9])[a-z0-9]{4,12}$/i.test('abc'));
console.log(/^(?=.*[0-9])[a-z0-9]{4,12}$/i.test('123'));
console.log(/^(?=.*[0-9])[a-z0-9]{4,12}$/i.test('abcd'));
console.log(/^(?=.*[0-9])[a-z0-9]{4,12}$/i.test('Abc1'));