js 正则
元字符
. 匹配除了换行符以外的任意字符
\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);

浙公网安备 33010602011771号