$re = '@http://repository\.law\.umich\.edu/[^/]+/(vol([0-9]+))+(/iss([0-9]+)(/([0-9]+))*)*@m';
$str = 'http://repository.law.umich.edu/mlr/vol92/iss3/4
http://repository.law.umich.edu/mlr/i-am-garbage
http://repository.law.umich.edu/mlr/vol92
http://repository.law.umich.edu/mlr/vol92/
http://repository.law.umich.edu/mlr/vol92/iss3
http://repository.law.umich.edu/mlr/vol92/iss3/4
http://repository.law.umich.edu/mlr/with/random/vol2
http://repository.law.umich.edu/mlr/vol341/iss311/412
http://repository.law.umich.edu/mlr/2343
';
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