$re = '/<input\s+(?![^>]*readonly)(?=[^>]*\btype\s*=\s*(?:["\']\s*)?text)[^>]*>/';
$str = 'a: <input name="vorname" type="text" size="30" maxlength="30">
b: <input type="text" id="vorname" size="30" maxlength="30">
c: <input style="width:100%" type="text" name="vorname">
d: <input name="vorname" type=text>
e: <input name="vorname" type="text" readonly="readonly">
f: <input name="vorname" type="password">';
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