Подтвердить что ты не робот

Буквы регулярных выражений, числа, тире и символы подчеркивания

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

([\w-]+)

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

Ответ 4

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

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

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

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

([\w\-]+)

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