Регулярные буквы, цифры, тире и знак подчеркивания - PullRequest
50 голосов
/ 26 февраля 2010

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

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

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

Я бы хотел иметь возможность сопоставить product_name и product-name

Ответы [ 4 ]

87 голосов
/ 26 февраля 2010

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

([A-Za-z0-9\-\_]+)
21 голосов
/ 26 февраля 2010

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

([A-Za-z0-9_-]+)
11 голосов
/ 26 февраля 2010

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

([\w-]+)

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

1 голос
/ 26 марта 2015

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

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

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

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

([\w\-]+)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...