$re = '/^([\s]+)?(var|let|const)?([\s]+)?([a-z=\s]+)(\()(.+)?(\))([\s]+)?([\n]+)?(\{)/mi';
$str = 'function func (foo) {}
var func = function() {}
function func () {
}
var func = function() {
}
function func ()
{
}
var func = function()
{
}
function func () {}
var func = function() {}
function func () {
}
var func = function() {
}
function func ()
{
}
var func = function()
{
}
function func () {}
var func = function() {}
function func () {
}
var func = function() {
}
function func ()
{
}
var func = function()
{
}';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php