Unfortunately, JS doesn't support lookbehinds and failed match returns null, not an empty array. So the only way to do that in one expression, without if conditions, is something like
color = (str.match(/color_form_submit_(\w+)/) || []).pop()
Example:
> ("color_form_submit_black".match(/color_form_submit_(\w+)/) || []).pop()
"black"
> ("foo bar".match(/color_form_submit_(\w+)/) || []).pop()
undefined
The advantage of this construct compared to the if statement is that it can be used in an expression context, for example, in a function call:
myRegex = /color_form_submit_(\w+)/
showColor((myLabel.match(myRegex) || []).pop())
'color_form_submit_yellow'.match(/color_form_submit_(\w+)/)[1]