Регулярные выражения: как выражать \ w без подчеркивания

Есть ли сжатый способ выразить:

\w but without _ 

То есть, «все символы включены в \ w, кроме _»

Я спрашиваю об этом, потому что я ищу наиболее сжатый способ выражения проверки имени домена. Доменное имя может содержать строчные и прописные буквы, цифры, знаки периода и тире, но не подчеркивается. \ w включает все вышеперечисленное, плюс подчеркивание. Итак, есть ли способ «удалить» подчеркивание из \ w через синтаксис regex?

Отредактировано: Я спрашиваю о регулярном выражении, которое используется в PHP.

Заранее спасибо!

следующий класс символов (в Perl)

 [^\W_] 

\W совпадает с [^\w]

Вы можете использовать отрицательный результат : (?!_)\w

Однако, я думаю, что писать [a-zA-Z0-9.-] более [a-zA-Z0-9.-] .

Чтобы быть в безопасности, обычно мы будем использовать класс персонажа:

 [a-zA-Z0-9.-] 

Повторяющийся «фрагмент» выше соответствует английскому алфавиту и цифрам плюс период . и тире - . Он должен работать даже с самой базовой поддержкой регулярных выражений.

Более короткий может быть лучше, но только если вы точно знаете, что он представляет.

Я не знаю, какой язык вы используете. Во многих двигателях \w эквивалентно [a-zA-Z0-9_] (для этого для этого требуется «режим ASCII»). Однако некоторые движки поддерживают Unicode для регулярного выражения и могут расширять \w чтобы соответствовать символам Unicode.

Если мое понимание правильное, \w означает знаки [A-Za-z0-9_] , тире не включены.

info: http://ru.wikipedia.org/wiki/Regular_expression#POSIX_character_classes

поэтому я предполагаю, что вы хотите [a-zA-Z0-9.-]

Некоторые варианты регулярных выражений имеют отрицательный синтаксис lookbehind, который вы могли бы использовать:

 \w(?<!_) 

Я бы начал с [^ _], а потом подумал, какие еще персонажи мне нужно отрицать. Если вам нужно отфильтровать ввод с клавиатуры, довольно просто перечислить все нежелательные символы.

Вы можете написать примерно так:

 \([^\w]|_)\u 

Если вы используете preg_filter с этой строкой, любой символ в \ w (исключая _ underscore) будет отфильтрован.