我不确定如何实现这个匹配表达式。目前我正在使用,
([A-Za-z0-9-]+)
...匹配字母和数字。我还想在同一个表达式中匹配破折号和下划线。谁知道怎么做?
我希望能够匹配 product_name 和产品名称
答案 0 :(得分:86)
只是逃避破折号以防止它们被解释(我不认为下划线需要逃脱,但它不会伤害)。你没有说你正在使用哪个正则表达式。
([A-Za-z0-9\-\_]+)
答案 1 :(得分:21)
你的表达式应该已经匹配破折号,因为最后的 - 不会被解释为范围运算符(因为范围没有结束)。要添加下划线,请尝试:
([A-Za-z0-9_-]+)
答案 2 :(得分:10)
根据您的正则表达式变体,您可以简单地执行此操作:
([\w-]+)
此外,您可能不需要括号,除非这是更大表达式的一部分。
答案 3 :(得分:1)
你确实可以匹配所有这些角色,但是逃避-
会更安全,因此很明显它是字面意思。
如果您使用的是POSIX variant,则可以选择使用:
([[:alnum:]\-_]+)
但是,因为你要包括下划线我只会使用:
([\w\-]+)
(适用于所有变体)