元字符
. 匹配除了換行符以外的任意字符
\w 匹配
字母或數字或下划線或漢字等 [a-z0-9A-Z_] (只考慮英文的話效果一樣)
\d 表示數字的意思,相反,\D表示非數字
限定符:
* 重復零次或多次
+ 重復一次或多次
? 重復一次或多次
{n} 重復n次
{n,} 重復n次或更多次
{n,m} 重復n到m次
空白:
\f匹配換頁符,\n匹配換行符,\r匹配回車,\t匹配制表符,\v匹配垂直制表符。
\s匹配單個空格,等同於[\f\n\r\t\v]
字符集合
[abc] 表示a或者b或者c中的任意一個字符
^[a-zA-Z0-9] 匹配已數字字母開頭的字符串
一般 來說,當“^”出現在 “[]”內時就被視做否定運算符;而當“^”位於“[]”之外,或沒有“[]”時,則應當被視做定位符
非貪婪 ?
a.*?b匹配
最短的,以a開始,以b結束的字符串
正則表達式的修飾符
全局匹配,修飾符g /..../g
不區分大小寫,修飾符i /...../i
行首行尾,修飾符m /....../m
demo:
var $name = "time";
var reg = new RegExp("\\b"+$name+"\\b\|\\bkitty\\b","g"); //new RegExp 的方法可以用$name變量值,但對\b這樣的邊界符要轉義 \\b
var str = "time is one datimey time kitty"
alert(str.replace(reg,""))
去除特殊字符串
function clearString(s){
var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()&;|{}【】‘;:”“'。,、?]")
var rs = "";
for (var i = 0; i < s.length; i++) {
rs = rs+s.substr(i, 1).replace(pattern, '');
}
return rs;
}
var h="#sdfsd///////fsdf/"
var t=clearString(h)
console.log(t)
function clearString(s){
var pattern = /[\s.<>/?~!@#¥……&*()&;|{}【】‘;:”“'。,、?.<>\/\[\]?~!@#¥……&*()&;|{}【】‘;:”“'。,、?]/g
var rs= s.replace(pattern,"")
return rs;
}
var h="dfghdfg df gh dfghdf [] \ / > gh"
var t=clearString(h)
$("html body").append(t)
console.log(t)
正則模版匹配
var pp = {
init:"替換的字符串",
reg:/{.+?}/g, /*+?非貪婪模式*/
pri:function () {
var k = this.init.match(this.reg).map(function (a) {
return a.slice(1, -1);
});
console.log(k)
},
remove_tag:function (str) {
str=str.replace(/<\/?[^>]*>/g, "")
console.log(str);//去掉所有的html標記
},
remove_s:function (str) {
str=str.replace(/(^\s+)|(\s+$)/g, "")
console.log(str)/*去除前后空格*/
},
remove_1:function (str) {
str = str.replace(/\s/g, "")
console.log(str)/*去除所有空格*/
},
get_tag_html:function(str){
reg=/<ul>[\s\S]*?<\/ul>/gi
console.log(str.match(reg))
}/*獲得指定標簽的內容*/,
remove_tag1:function(str){
str=str.replace(/<ul[\s\S]*?>|<\/ul>/g, "")
console.log(str)
}/*去除指定標簽*/,
pri3:function (arr) {
var str = this.init
var len = str.match(this.reg).length
console.log(str.match(this.reg))
for (var i = 0; i < len; i++) {
var t = this.reg.exec(str)
console.log(t)
var tmp = t.toString().slice(1, -1);
if (arr[tmp]) {
str = str.replace(t.toString(), arr[tmp])
}
}
console.log(str)
}/*替換{}中的字符串*/
}
pp.init = "開始{$age}中sdfasdf{$name}間從{然后后來}前"
pp.pri3({"$name":"_name_", "$age":"_age_"})
pp.remove_tag("<div>asdfasdfasdf<span>a12<33>4456</span></div>")
pp.get_tag_html("<ul>asdfasdfasdf</ul><ul>21</ul>")
pp.remove_tag1("<ul class='sd'>232323<ul>asdf</ul></ul><ul>ddd</ul>")
輸出
開始_age_中sdfasdf_name_間從{然后后來}前
replace function
var str = "他今年22歲,她今年20歲,他的爸爸今年45歲,她的爸爸今年44歲,一共有4人"
function test($1) {
var gyear = (new Date()).getYear() - parseInt($1) + 1;
return $1 + "(" + gyear + "年出生)";
}
var reg = new RegExp("(\\d+)歲", "g");
var reg2=/(\d+)歲/g /*所以有時*/
var newstr = str.replace(reg, test);
alert(str);
alert(newstr);
