正则表达式字母,数字,破折号和下划线

时间:2010-02-25 22:09:05

标签: regex

我不确定如何实现这个匹配表达式。目前我正在使用,

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

...匹配字母和数字。我还想在同一个表达式中匹配破折号和下划线。谁知道怎么做?

我希望能够匹配 product_name 产品名称

4 个答案:

答案 0 :(得分:86)

只是逃避破折号以防止它们被解释(我不认为下划线需要逃脱,但它不会伤害)。你没有说你正在使用哪个正则表达式。

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

答案 1 :(得分:21)

你的表达式应该已经匹配破折号,因为最后的 - 不会被解释为范围运算符(因为范围没有结束)。要添加下划线,请尝试:

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

答案 2 :(得分:10)

根据您的正则表达式变体,您可以简单地执行此操作:

([\w-]+)

此外,您可能不需要括号,除非这是更大表达式的一部分。

答案 3 :(得分:1)

你确实可以匹配所有这些角色,但是逃避-会更安全,因此很明显它是字面意思。

如果您使用的是POSIX variant,则可以选择使用:

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

但是,因为你要包括下划线我只会使用:

([\w\-]+)

(适用于所有变体)