I was unable to find correct regex for my case. I found almost perfect, but it still passes with leading spaces.

Requirements:

var regex = /^\s*(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)\s*$/;

var passwd = "abcdefg12345" //Passes
var passwd = " abcdefg12345" //Does not pass
var passwd = "abcdefg 12345" //Does not pass
var passwd = "abcdefg12345 " //Passes but should not

Any advise?

Also I would like to add minimum requirement for length, how should that be done?

有帮助吗?

解决方案

If you want to prevent leading or trailing spaces, just remove the last \s. To set a minimum length for the password, change your + quantifier to {n,}, where n is the minimum length.

For example, the following pattern matches any sequence of 5 or more alphanumeric characters that contains at least one letter, and at least one number:

/^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]{5,})$/
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top