Требуется выражение проверки правильности регулярного выражения Flex для пароля, которое допускает только буквенно-цифровые значения и требует одно число - PullRequest
2 голосов
/ 19 апреля 2010

Здравствуйте, я пытаюсь настроить RegexpValidator, который принимает только строку буквенно-цифровых символов длиной от 6-30 символов и требует одного номера. Я новичок в Регулярных выражениях, и все, что я пробовал, похоже, продолжает возвращать недействительный ValidationRsultEvent. Вот кусок кода:

<mx:RegExpValidator id="regexValidator" source="{passwordInput}" property="text"
                        triggerEvent="" valid="onPasswordValidate(event)" invalid="onPasswordValidate(event)" />

private function validateRegister():void
{
  regexValidator.expression = "^(?=.*(\d|\W)).{6,30}$";
  regexValidator.validate();
}

Ответы [ 2 ]

3 голосов
/ 19 апреля 2010

Я не уверен, что будет причиной ошибки валидации, но что касается вашего регулярного выражения, сопоставить буквенно-цифровые строки хотя бы с одним числом try ^(?=.*\d)\w{6,30}$

^         # Match begining of string
(?=.*\d)  # Lookahead, assert there is any number of characters followed by a digit
\w{6,30}  # \w matches letters, digits and the underscore character, 6-30 of them
$         # Match End of string

Если вы хотите сопоставлять только буквы и цифры, вместо \w вы можете использовать [0-9a-zA-Z].

Ваше текущее регулярное выражение ^(?=.*(\d|\W)).{6,30}$ соответствует любой строке, которая содержит хотя бы один символ, отличный от [a-zA-Z_] (\d|\W соответствует цифре или символу, не являющемуся словом), длина которого составляет от 6 до 30 символов. , что не обязательно соответствует указанным вами требованиям.

1 голос
/ 19 апреля 2010

В соответствии с руководством по ActionScript обратный слеш является зарезервированным символом. Поэтому ваше выражение должно выглядеть как

"^(?=.*(\\d|\\W)).{6,30}$"
...