It would be difficult to parse a completely arbitrary number of attributes with just regex, but if you only have a maximum of 3 (or some other reasonably small number), you could use something like this:
\[img (?:([a-zA-Z]+)="([a-zA-Z\d]+)")? ?(?:([a-zA-Z]+)="([a-zA-Z\d]+)")? ?(?:([a-zA-Z]+)="([a-zA-Z\d]+)")? ?].+\[\/img]
Here's a link that shows the matches you'll get. As you can see, odd numbered captures are the attribute names while evens are the values. Just delete the double quotes if you're not using them. http://regex101.com/r/bN1jT3