字符串长度可以是 4 - 12 个字符。它可以只包含字母和数字,但必须至少包含1 个数字。
我需要用一个正则表达式模式来解决这个问题。
我试过类似的东西:
/^(?=.*[a-z]*)(?=.*[0-9]+).{4,12}$/i
这不会接受少于 4 个或多于 12 个字符,它还会检查字符串是否包含数字,但显然由于 .* 部分而不好。我无法弄清楚如何排除所有非字母数字字符。
任何帮助,将不胜感激!
提前致谢!
我认为你的模式很接近,但我会用这个:
/^(?=.*[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'));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句