var str='AbCdEFgiX';
//JS风格:
//这个正则表达式什么也不代表,只代表abc本身。
var reg=new RegExp('abc','i');
alert(str.match(reg)); //返回:AbC
//常用风格:
var re=/efg/i;
alert(str.match(re)); //返回:EFg
var str='asdf zxcvm';
//找出字符串中的数字可以使用元字符\d
var re=/\d/;
//没告诉系统要找多少数字,系统在找到数字后就返回
alert(str.match(re)); //返回:
//因此需要全局匹配,使用修饰符g
var re=/\d/g;
//没告诉系统要找几位,系统会将所有找到的数字返回
alert(str.match(re)); //返回:,//所以可以使用两个元字符,告诉系统要找的数字是位
var re=/\d\d/g;
//显然这样是不可取的,因为数字的位数并不固定,可能是位,有可能还是多位
alert(str.match(re)); //返回:,//所以需要用到量词+,+代表若干,也就是多少都可以。
var re=/\d+/g;
//现在返回正确。
alert(str.match(re)); //返回:,
实例:使用正则找出字符串中所有数字
var str=' abc d aa c zz -=-=s-';
//alert(str.match(/\d+/g));
//元字符\d也可以使用[-]代替,到随便哪个都行。
alert(str.match(/[-]+/g)); //返回:,
var str='The best things in life are free,like hugs,smiles,friends,kisses,family,love and good memories.';
var re=/i/;
alert(re.test(str)); //返回:true
var reg=/z/;
alert(reg.test(str)); //返回:false
//上面的代码可以不用定义正则的变量,直接使用,将两行合并为一行。
alert(/i/.test(str));
alert(/z/.test(str));
var str = 'good good study day day up';
var re = /good/;
var arr = re.exec(str);
console.log(arr); //控制台显示:["good"]点开后显示: "good",index ,input "good good study day day up"。
console.log(arr.index); //控制台显示:
console.log(arr.input); //控制台显示:good good study day day up
var str = 'good good study day day up';
var re = /g(o+)d/;
var arr = re.exec(str);
console.log(arr); //显示:["good","oo"]点开后显示: "good","oo",index ,input: "good good study day day up"
console.log(arr.length); //显示:
var reg = /(o+)/;
//var reg = /o+/; 只返回一个"oo",长度为
var arr = reg.exec(str);
console.log(arr); //显示:["oo","oo"]点开后显示: "oo",index ,input: "good good study day day up"
console.log(arr.length); //显示:
var str = 'good good study day day up';
var re = /good/g;
var arr;
do{
arr = re.exec(str);
console.log(arr);
console.log(re.lastIndex);
}
while(arr !== null)
/*
结果如下:
显示:["good"],点开后: "good",index,input "good good study day day up"。
lastIndex为。
显示:["good"],点开后: "good",input "good good study day day up"。
lastIndex为。
var str = 'good good study day day up';
var re = /good/g;
var arr;
while((arr = re.exec(str)) != null){
console.log(arr);
console.log(re.lastIndex);
}
/*
结果如下:
显示:["good"],点开后: "good",input "good good study day day up"。
lastIndex为。
显示:["good"],点开后: "good",input "good good study day day up"。
lastIndex为。
*/
var str = 'Today is a beautiful day,Day day happy!';
var re = /day/gi;
var str = str.replace(re,'天');
console.log(str); //输出:To天 is a beautiful 天,天 天 happy!
reg = /(to)?day/gi;
reg.compile(reg);
str = str.replace(reg,'日');
console.log(str); //输出:日 is a beautiful 日,日 日 happy!
这么说起来正则表达式貌似很简单的样子,其实挺难的,why are you so diao?归根结底就是这种一般人很难看懂的表达方式,自己当时写的时候很明白表达的是什么,过段时间回头,哎哟我去,怎么不认识了。其实这是一个熟能生巧的过程,记得有篇课文中写到“好记性不如烂笔头”,勤能补拙,多动手多写多思考,通过码海战术,反复推敲代码,让自己身经百战,见的多了,自然就不虚了,编程是一门艺术,精通任何一门艺术,都需要大量的练习和领悟,知识就是一个积累的过程,当然更重要的还是要自己去总结归纳,让知识真正属于自己。我觉着写程序这东西吧,最重要的还是思维,让代码始终跟着这种思维走,目的只有一个,怎么简单怎么省事怎么做,当然不是偷工减料,要明白需要什么,不需要什么,要呈现出什么样的效果,应该怎么去一步步实现,只要有这种实现目的的思维,就可以让代码始终保持着清晰简洁的状态,加快编写代码的效率,还有助于排错,也有利于代码的优化。那个好像扯太远了,每个人都有自己思考问题的方式,有不同的做事风格,只要最优化解决问题就好了,回到正事,接下来看看正则表达式应用的两个实例。
判断string中是否有与表达式匹配的字符串,有则返回true,否则返回false
例如
var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free"));
由于该字符串中存在字母 "e",以上代码的输出将是:true