Мне нужно регулярное выражение, которое соответствует буквам UTF-8 и цифрам, знак тире (-
) но не соответствует подчеркиваниям (_
), я попробовал эти глупые попытки без успеха:
([\w-^_])+
([\w^_]-?)+
(\w[^_]-?)+
\w
сокращение от [A-Za-z0-9_]
, но это также соответствует символам UTF-8, если я имею u
модификатор установлен.
Кто-либо может выручить меня с этим?
.
Попробуйте:
(?:[\w\-](?<!_))+
Это делает простой матч на все, что кодируется как a \ w (или тире), а затем имеет ширину нуля Смотреть больше, что гарантирует, что персонаж, который был только что сопоставлен, не подчеркивает.
В противном случае вы можете выбрать этот:
(?:[^_\W]|-)+
, который является более настроенным подходом (обратите внимание на прописные буквы W)
Хорошо, мне было очень весело с Unicode в аромате PHP PCR: D Peekaboo говорит, что есть простое решение:
[\p{L}\p{N}\-]+
\ p {l} совпадает с тем, что Unicode, который квалифицирует как букву (Примечание: не символ слова, таким образом, не подчеркивает), а \ p {n} совпадает с тем, что выглядит как номер (включая римские цифры и более экзотические вещи).
\ - это просто сбежанная тире. Хотя не нужно строго необходимо, я склонен делать точку, чтобы избежать тире в классах характера ... Обратите внимание, что в Unicode есть десятки разных тире, что приведет к тому, что вызывает следующую версию:
[\p{L}\p{N}\p{Pd}]+
Где «PD» представляет собой пунктуацию Dash, в том числе, но не ограничиваясь нашим минус-тирешкой. (Обратите внимание, снова нет подчеркивания здесь).
Просматривая исходный код и документацию, _ login ()
никогда фактически не наборы внутренний флаг loggedin
. Это выполняется только в модуле аутентификации. Следует также помнить, что общепринятой практикой является то, что методы, начинающиеся с '_', должны рассматриваться по существу как частные методы (или в терминологии Java, возможно, защищенные) только для использования подклассами. Так что вы не должны использовать _login напрямую.
LoginVarPrefix: По умолчанию CGI:: Session:: Auth ожидает, что имя пользователя и пароль посетителя будут переданы в переменных формы log _ username и регистрация _ password. Во избежание конфликтов префикс регистрация _ может быть изменен этим параметром.
Я верю, что это будет работать
$session->param('log_username', 'admin');
$session->param('log_password', 'admin');
$auth->authenticate(); # no return value to check
print "Content-type: text/html\n\n";
if ($auth->loggedIn) {
print "<p>logged in; go to <a href='index.pl'>index</a></p>";
} else {
print "<p>not logged in</p>";
}
-121--4028827- Примечания:
Я не уверен, какой язык вы используете, но в PERL вы можете просто написать: [[: alnum:] -] +, когда набор правильный язык.