首先,让我声明一下,我在写这篇文章之前花了2个多小时在弄正则表达式。悲~悲~悲~
按照一般的思路,先来看看其他几个插找方式: 我以字符串
var str = "eattd gebcat gedat jadu geat beu";
為例子。
1.以"ge"為开头的,结果应该是"gebcat, gedat, geat"。因為单词以"ge"开头,则我可以放入一个新的数组供以后使用。
var exp1 = /\bge\w+/ig;
var matchedStr = exp1.exec(str);
while (matchedStr != null && matchedStr.index if (matchedStr[0] != null) {
inv.innerHTML += "
The result is: " + matchedStr[0];
//newStr = newStr.replace(matchedStr[0]);
wordsArr.push(matchedStr[0]);
}
matchedStr = exp1.exec(str);
}
2.以"at"结尾的单词,结果為"gebcat","gedat","geat"。同样,我可以放入数组。
var exp1 = /\w+(at\b)/ig;
3.不以"ge"开头的单词,我需要另外一个数组来存放。
var exp1 = /\b(?!ge)\w+/ig;
var wordsArr = new Array();
var matchedStr = exp1.exec(str);
while (matchedStr != null && matchedStr.index if (matchedStr[0] != null) {
inv.innerHTML += "
The result is: " + matchedStr[0];
newStr = newStr.replace(matchedStr[0]);
wordsArr.push(matchedStr[0]);
}
matchedStr = exp1.exec(str);
}
//wordsArr = newStr.split(" ");
for (var i = 0; i if (wordsArr[i] == "undefined") {
wordsArr.splice(i,1);
} else
i++
}
4. 不以"at"结尾的的单词,好,问题来了。Javascript中的Regex比较弱,不支持逆环视否定,因此不能写:
var exp1 = /\w+(?
而
var exp1 = /\w+(?!at\b)/ig;
的意思中单词结尾的右边不能為"at",那是不可能的,\b\w就是查找单词边界。我换一个角度来写,找到以at结尾的,把该单词从原来的字符串中删除。然后放入一个新数组。
function RegularExpTest() {
var inv = document.getElementById("RegexTest");
var str = "eattd gedbcat gedat jadu geat beu";
var newStr = str;
var exp1 = /\w+at\b/ig;
var wordsArr = new Array();
var matchedStr = exp1.exec(str);
while (matchedStr != null && matchedStr.index if (matchedStr[0] != null) {
inv.innerHTML += "
The result is: " + matchedStr[0];
newStr = newStr.replace(matchedStr[0]);
}
matchedStr = exp1.exec(str);
}
wordsArr = newStr.split(" ");
for (var i = 0; i if (wordsArr[i] == "undefined") {
wordsArr.splice(i,1);
} else
i++
}
inv.innerHTML += "
The result is: " + wordsArr;
}
OK,完成了!
思则得,不思则不得。
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn