Мне нужно регулярное выражение, которое может проверять строку в следующих критериях.Регулярное выражение (regex) в JavaScript
- Начиная со стенографического текста ROLE_.
- Допускается использование только заглавных букв и разрешений.
- В нем должно быть не менее 6 символов и не более 20 символов.
- Два или более последовательных символа подчеркивания запрещены.
- Недопустимые ведущие и/или задние символы подчеркивания.
- Текст ROLE_ADMIN запрещен.
Соответственно, следующее регулярное выражение работает на Java.
(?!.*__.*)(?!^ROLE_ADMIN$)(?!.*_$)(ROLE_[A-Z_]{1,15})
Но в JavaScript, строка как ROLE_ADMIN_s
(s
в конце строчными) рассматривается как действительная строка, которая не должна быть на самом деле. Максимально допустимые символы (20) также не проверяются правильно.
Я использую функцию match()
как,
if($("#txtAuthority").val().match("(?!.*__.*)(?!^ROLE_ADMIN$)(?!.*_$)(ROLE_[A-Z_]{1,15})"))
{
//...
}
Вам нужно добавить '^' в начало и '$' до конца. Кроме того, это не ваша проблема, потому что браузер обрабатывает ее автоматически в этом случае, но вы должны обертывать регулярные выражения в '/ myexpression /' вместо '' myexpression '' – Dave
:-) У меня были проблемы с обратным вызовом при переходе с js на java - добавление '. *' at start & end ... – anishsane