Add a \s? if a space can be allowed.
\s stands for white space
? says the preceding character may occur once or not occur.
If more than one spaces are allowed and is optional, use \s*.
* says preceding character can occur zero or more times.
'#<a href\s?="https://stackoverflow.com/questions/14293024/(.*?)" title\s?="https://stackoverflow.com/questions/14293024/(.*?)"><img alt\s?="https://stackoverflow.com/questions/14293024/(.*?)" src\s?="https://stackoverflow.com/questions/14293024/(.*?)"[\s*]width\s?="150"[\s*]height\s?="https://stackoverflow.com/questions/14293024/(.*?)"></a>#'
allows an optional space between attribute name and =.
If you want an optional space after the = also, add a \s? after it also.
Likewise, wherever you have optional characters, you can use ? if the maximum occurrence is 1 or * if the maximum occurrence is unlimited, following the optional character.
And your actual problem was [\s*] which causes occurrence of a whitespace or a * as characters enclosed in [ and ] is a character class. A character class allows occurrence of any of its members once (so remove * from it) and if you append a quantifier (?, +, * etc) after the ] any character(s) in the character class can occur according to the quantifier.