字符串长度可以是4到12个字符。 它可能包含仅字母和数字,但必须包含至少1个数字。
我需要用一个正则表达式来解决这个问题。
我尝试过类似的事情:
/^(?=.*[a-z]*)(?=.*[0-9]+).{4,12}$/i
这不会接受少于4个或超过12个字符,它还会检查字符串是否包含数字,但显然由于。*部分不合适。 我无法弄清楚如何排除所有非字母数字字符。
任何帮助将不胜感激!
提前致谢!
答案 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'));