gruss ingobar, hallo Jörg,
Danke. Hat wunderbar geklappt.
nur glueck gehabt.
Du kannst durch einen "eval" auf einen String eine gültiges
RegExp-Objekt erhalten:
»»
var RegExpStr = "/abc/";
var ergebnis = word.match(eval(RegExpStr));
das mag fuer kurze tests angehen, ist aber alles andere als sicher.
man wird nicht umhinkommen, den ausdruck zumindest auf die
beiden bestandteile eines RegExp hin abzusuchen - suchmuster/
pattern und flags.
ueber try {...} catch (exc) {...}
und den RegExp-konstruktor
kann dann der versuch gestartet werden, einen regulaeren
ausdruck zusammenzubasteln.
diese vorgehensweise verhindert einen unkontrollierten programm-
abbruch. fuer das gegebene bsp. ist es sogar sinnvoll, die meldung
des ausnahme-ereignisses/exception auszugeben.
umgebaut:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>RegularExpression Tester</title>
<script type="text/javascript">
~~~~~~javascript
var testIt = function () {
/*String.prototype.toRegExpString = function () {
return this.replace(/([\^\$\.\*\+\?\=\!\:\|\\\/\(\)\[\]\{\}])/g,"\\$1");
};*/
String.prototype.basicTrim = function () {
return this.replace(/\s+$/,"").replace(/^\s+/,"");
};
var regXSeparator = (/^\/(.*)\/(gim|gmi|img|igm|mgi|mig|gi|ig|gm|mg|im|mi|[gim])*$/);
var regXSource = document.getElementById("inputRegExp");
var output = document.getElementById("feedback");
var regXValue = regXSource.value.basicTrim();
if (regXSeparator.test(regXValue)) {
var regXSeparator = regXSeparator.exec(regXValue); // RegExp.$X is marked deprecated;
var pattern = regXSeparator[1]; // RegExp.$1;
var flags = regXSeparator[2]; // RegExp.$2;
var err, regXTest;
var testText = document.getElementById("inputText").value;
try {
regXTest = new RegExp(pattern, flags);
} catch (exc) {
err = exc;
//alert(exc.message);
}
if (regXTest) {
regXSource.value = regXTest;
//alert("regXValue\t: " + regXValue + "\nregXTest\t: " + regXTest);
//alert(regXTest + ".test(\"" + testText + "\") ? " + regXTest.test(testText));
if (regXTest.test(testText)) {
var resultsArr = testText.match(regXTest);
output.value = "Wird erfasst";
} else {
output.value = "Wird NICHT erfasst";
}
} else {
output.value = "fehlerhafte syntax: " + err.message;
}
} else {
output.value = "fehlerhafte syntax";
}
};
~~~~~~html
</script>
</head>
<body>
<h3>Testen von regulären Ausdrücken</h3>
RegExp: <input type="input" size="56" id="inputRegExp" value="/a(a|b)*/"><br>
Text:<br><textarea cols="49" rows="15" id="inputText">abababa</textarea><br>
<input type="button" size="20" value="Testen" onclick="testIt()">
<input type="input" size="53" id="feedback" value="">
</body>
</html>
by(t)e by(t)e - peterS. - pseliger@gmx.net
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]