2010-02-25 2 views
39

Я не уверен, как я могу добиться этого выражения соответствия. В настоящее время я использую:Буквы регулярных выражений, числа, тире и подчеркивания

([A-Za-z0-9-]+) 

... который соответствует буквам и цифрам. Я также хотел бы совместить символы тире и подчеркивания в одном выражении. Кто-нибудь знает как?

Я хотел бы быть в состоянии соответствовать PRODUCT_NAME и имя-продукта

ответ

70

Просто избежать тира, чтобы предотвратить их от интерпретации (я не думаю, что подчеркивание потребности вылетающей, но это не помешает). Вы не говорите, какое регулярное выражение вы используете.

([A-Za-z0-9\-\_]+) 
+0

Как следует, как я могу применять вышеуказанные правила, исключая периоды? Я хотел бы проигнорировать, например, image.png –

+4

@George: Это регулярное выражение уже не соответствует периодам. –

+1

@George Пожалуйста, не спрашивайте о последующих вопросах в любом месте, кроме новых вопросов. Комментарии не для этого; ответы не для этого; если у вас есть новый вопрос, задайте новый вопрос. –

21

Ваше выражение должно уже соответствовать прочерки, так как окончательный - не будет интерпретироваться как оператор диапазона (поскольку диапазон не имеет конец). Чтобы добавить символ подчеркивания, а также, попробуйте:

([A-Za-z0-9_-]+) 
9

В зависимости от вашего варианта регулярных выражений, вы могли бы быть в состоянии сделать это просто:

([\w-]+) 

Кроме того, вы, вероятно, не нужны круглые скобки, если это не является частью большего выражения.

+0

Это файл .htaccess, поэтому мне нужны скобки, поскольку, как вы сказали, это в более крупном выражении :) –

+0

Это сработало для меня, и я думаю, что это немного чище, используя ярлык «word». На самом деле я использовал [\ w -] * –

0

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

Если вы используете POSIX variant вы можете выбрать для использования:

([[:alnum:]\-_]+)

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

([\w\-]+)

(работает в все варианты)

Смежные вопросы