Php regex匹配包含下划线或后跟数字的字符串


Php regex to match string containing underscore or followed by a digit

我有这样一个场景:

 a) word  => capture "word"
 b) word_and_digit_90 => capture "word_and_digit" and "90"
 c) word_90 => capture "word" and 90

我有这样的正则表达式,这是很好的情况下a)和c),但失败与b)

 /([a-z]+)(?:_('d+)){0,1}/i

如果有人能就a), b), c)提出解决方案,我将不胜感激

<标题>编辑

一个建议的解决方案是:

 /([a-z]+(?:_[a-z]+){0,})(?:_('d+)){0,1}/i

我想如果有人建议好的替代

试试这个regex:

/([a-z_]+[a-z])(?:_('d+))?/

最简单的:

/^[a-z]+[_a-z'd]+$/