Как написать совпадения для ввода, который содержит буквенно-цифровые и специальные символы - PullRequest
0 голосов
/ 09 марта 2012

У меня проблема с моим matches.У меня есть поле, которое ДОЛЖНО принять значение, которое может содержать любую комбинацию alphanumeric and special characters.У меня есть код, который отлично работает, когда ввод 1) combination of alphanumeric and special characters, and 2) alphanumeric.Но если вход содержит комбинацию либо 1) number and special characters ONLY without alphabet or 2) alphabet and special characters ONLY without number, я получил ошибку на моем matches.Я хотел создать matches, который лучше всего работает со следующими комбинациями ввода:

1) alphabet+number
2) alphabet+special character
3) alphabet+number+special character
4) number+special character

Это мой код:

matches: /^(?=.*[0-9]+.*)(?=.*[a-zA-Z]+.*)[0-9a-zA-Z_\[\]\\\^\$\.\|\?\*\+\(\)~!@#%&-=]{8,}$/

Мне нужны ваши предложения!Спасибо!

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Это потому, что ваш позитивный взгляд требует, чтобы оба a [0-9] присутствовали и a [a-zA-Z] присутствовали.

Попробуйте уменьшить это до одногопрогноз, который просто указывает, что присутствует хотя бы один из [0-9] и [a-zA-Z]:

matches: /^(?=.*[0-9a-zA-Z])[0-9a-zA-Z_\[\]\\\^\$\.\|\?\*\+\(\)~!@#%&-=]{8,}$/

Кроме того, вы можете повысить эффективность регулярного выражения, изменив .* в вашем заголовке будет [^0-9a-zA-Z]*: таким образом, заголовок будет совпадать с первым алфавитно-цифровым номером, который он найдет, а затем остановится, предотвращая ненужное сканирование:

matches: /^(?=[^0-9a-zA-Z]*[0-9a-zA-Z])[0-9a-zA-Z_\[\]\\\^\$\.\|\?\*\+\(\)~!@#%&-=]{8,}$/
0 голосов
/ 09 марта 2012
 /^(?=.*[a-zA-Z0-9]+.*)[_\[\]\\\^\$\.\|\?\*\+\(\)~!@#%&-=]{8,}$/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...