JavaScript正则表达式入门

原创 2013年12月04日 09:51:31

 

<html>
<head>
<TITLE>检查双字符</TITLE> 
<script language=javaScript>
//一下例子摘抄自http://www.iteye.com/topic/940835
//如果 match 方法没有找到匹配,返回 null。如果找到匹配返回一个数组并且更新全局 RegExp 对象的属性以反映匹配结果。
function testMatch(){
	var toMatch = "a bat, a cat, a fAt baT, a faT cat"; 
	var regexp = /at/gi;
	var array = toMatch.match(regexp);
	alert(array.length);
	for(var i =0; i < array.length; i++){
		alert(array[i]);
	}
}

function testExec(){
	var toMarch7 = "1 3 4 5"; 
	var regExp7 = /(\d+)\s*(\d+)/g; 
	var result7 
	while((result7= regExp7.exec(toMarch7)) !=null){ 
	 alert(result7);//分别为1 3,1,3 和 4 5,4,5 
	 alert(regExp7.lastIndex);//分别为3和7 
	} 
}

//如果找到一个匹配,search 方法将返回一个整数值,指明这个匹配距离字符串开始的偏移位置。如果没有找到匹配,则返回 -1。
function SearchDemo(){
   var r, re;                   // 声明变量。
   var s = "The rain in Spain falls mainly in the plain.";
   re = /falls/i;            // 创建正则表达式模式。
   r = s.search(re);            // 查找字符串。
   alert(r);
}

function testReplace(){
	var sToChange = "The sky is red"; 
	alert(sToChange);
	var reRed = /red/; 
	var result = sToChange.replace(reRed,"blue");    //输出The sky is blue 
	alert(result);
}

function testSpilte(){
	var sColor = "red, blue, yellow"; 
	var reExp = /\,/; 
	var arrs = sColor.split(reExp);
	//得到一个数组["red","blue","yellow"]
	for(var i = 0; i < arrs.length; i++){
		alert(arrs[i]);	
	}
}

function testScope(){
	var toMatch = "a bat, a cat, a fAt baT, a faT cat"; 
	var reg = /[bcf]at/gi ; 
	var arrs = toMatch.match(reg);
	//返回的数组["bat", "Cat", "fAt", "baT", "faT", "cat"]
	for(var i = 0; i < arrs.length; i++){
		alert(arrs[i]);	
	}
}

function testLogic(){
	var toMarch4 = "dog"; 
	var toMarch5 = "cat"; 
	var regExp4 = /dog|cat/; 
	alert(regExp4.test(toMarch4));//true 
	alert(regExp4.test(toMarch5));//true 	
}
/*
replacement 既可以是一个替换的字符串,也可以是一个function
如果是function的情况, 这个function会为每一个匹配执行一次,这个function的返回值作为最终替换的字符串.
*/
function testOrReplace(){
	var userInput = "badWord1asdasdandBadWord2"; 
	var toMarch6 = /badword1|badword2/gi; 
	var newStr = userInput.replace(toMarch6, function(march){ 
		return march.replace(/./g,"*"); 
	}); 
	alert(newStr);	
}
 
//将&替换为&amp;,将'替换为&#39;
function SDReplaceData()
{
	var objStr = "huang&bi'ao";
    var temp = objStr.replace( /(\&|\')/g,
		function($0, $1)
		{
			return{
			"&" : "&amp;",
			"'" : "&#39;"
			}[$1];
		}
	);
	alert(temp);
}

function getAllWord(){
	var toMarch5 = "First Second Third Fourth Fifth Sixth"; 
	var regExp5 = /\b(\S+?)\b/g ; //或者 /\b(\S+)\b/g 和 /(\w+)/g 
	var arrs = toMarch5.match(regExp5); 
	//First Second Third Fourth Fifth Sixth 
	for(var i = 0; i < arrs.length; i++){
		alert(arrs[i]);	
	}
	
}

function checkNumber(){
	var pid = /\d{15}|\d{18}/;//身份证
	var mphone = /\d{11}/;//手机号码
	var phone = /\d{3,4}-\d{7,8}/;//电话号码
	
	if(mphone.test("13893939392")){
		alert("这是手机号码");	
	}//true
	if(phone.test("010-99392333")){
		alert("这是座机号码");	
	}//true
	if(phone.test("0771-3993923")){
		alert("这是座机号码");	
	}//true	
	if(pid.test("33302222222220511X")){
		alert("这是身份证号码");	
	}
}

//多行匹配
function oneMoreLine(){
	var pattern = /^javascript/;
	alert(pattern.test("java\njavascript"));//false
	pattern = /^javascript/m;  //多行搜索开关(重定义^与$的意义)
	alert(pattern.test("java\njavascript"));//true
}

/*前瞻:
表示当某个特定的字符分组出现在另一个字符串之前时才去捕获它.
前瞻分正向前瞻 和负向前瞻 , 正向前瞻检查的是接下来出现的是不是某个特定的字符集. 而负向前瞻则是检查接下来的不应该出现的特定字符集.
正向前瞻需要将模式放在(?= 和 ) 之间,注意这不是分组,虽然它也用到括号. 负向前瞻需要将模式放在(!= 和 ) 之间.
*/
function testForward(){
	var toMarch1 = "bedroom"; 
	var toMarch2 = "bedding"; 
	var bedReg = /(bed(?=room))/; 
	var bedReg2 = /(bed(!=room))/;
	alert("正向匹配 : " + bedReg.test(toMarch1)); //true 
	alert("负向匹配 : " + bedReg2.test(toMarch1));
	//bed,bed 因此这个正则表达式返回的第一个匹配是bed,而不是bedroom,但是它只会去匹配后面跟着 room的bed,有点搞 
	alert(bedReg.exec(toMarch1)); 
	alert(RegExp.$1); //bed 
	alert(bedReg.test(toMarch2)); //false
}


/*
非捕获分组:将子表达式放在“?:”符号后,并使用()括起来构成
捕获分组:如果使用普通的()是捕获性质的分组,它匹配的结果会被记录下来,耗费较多的时间
根据环境到底是使用捕获性质的分组还是非捕获性质的分组
*/
function testUncapture(){
	var regExp = /huang(?:biao)/gi;
	var str = "adsjlfjdhuangbiaodfas";
	var arrs = str.match(regExp);
	for(var i = 0; i < arrs.length; i++){
		alert(arrs[i]);	
	}
}

function testUncapture2(){
	var str="img1.jpg,img2.gif,img3.bmp";
	var reg = /(?:\w*)(?=\.gif)/;
	var result = str.match(reg);
	alert(result);
}
</script>
<link rel="stylesheet" href="../style.css"></head>
<body >

<input type="button" value="match方法" onClick="testMatch()"><br>
<input type="button" value="exec方法" onClick="testExec()"><br>
<input type="button" value="SearchDemo方法" onClick="SearchDemo()"><br>
<input type="button" value="Replace方法" onClick="testReplace()"><br>
<input type="button" value="Spilte方法" onClick="testSpilte()"><br>
<input type="button" value="取值范围" onClick="testScope()"><br>
<input type="button" value="并集" onClick="testLogic()"><br>
<input type="button" value="function替换" onClick="testOrReplace()"><br>
<input type="button" value="JSON替换" onClick="SDReplaceData()"><br>
<input type="button" value="得到所有的单词" onClick="getAllWord()"><br>
<input type="button" value="检查数字" onClick="checkNumber()"><br>
<input type="button" value="多行匹配" onClick="oneMoreLine()"><br>
<input type="button" value="前瞻" onClick="testForward()"><br>
<input type="button" value="非捕获分组" onClick="testUncapture()"><br>
<input type="button" value="前瞻和非捕获分组" onClick="testUncapture2()"><br>
</body>
</html>
 

 

相关文章推荐

javascript 正则表达式入门基础—由浅入深

javascript 正则表达式 //javascript正则表达式的基本知识 //声明javascript 正则表达式 var reCat = ne...
  • a125138
  • a125138
  • 2012年08月11日 19:38
  • 2221

javascript简单的正则表达式入门

内容来自百度前端学院javascript入门课程 基本的HTML:

[入门]javascript正则表达式

正则表达式,又称正规表示法。它使用单个字符串来描述、匹配一系列符合某个规律的字符串。 在很多文本编辑器中,正则表达式用于检索、替换某些符合某种规则的文本。声明正则在 js 中,声明正则,有两种方式:...

JavaScript中的正则表达式快速入门

RegExp 对象用于规定在文本中检索的内容。 什么是 RegExp? RegExp 是正则表达式的缩写。 当您检索某个文本时,可以使用一种模式来描述要检索的内容。RegExp 就是这种模式。 简...

javascript学习笔记2-正则表达式入门

材料:正则表达式30分钟入门教程  感谢作者deerchao    地址http://deerchao.net/tutorials/regex/regex.htm 定义: 正则表达式是记录文...

JavaScript正则表达式从放弃到入门

有的人会问,对于JSer来说,正则表达式重要吗,是不是可以跳过这个似乎特别多变需要记很多规则的知识块。我的回答是正则表达式真的是一个强大的杀器,用来把哪些乱七八糟的字符串里查找、替换、提取工作上,绝对...
  • Mr_jier
  • Mr_jier
  • 2016年05月14日 12:19
  • 420

JavaScript语法入门系列(七) 类和对象(正则表达式RegExp)

8.4 正则表达式RegExp RegExp 对象表示正则表达式,它可以对字符串执行模式匹配,从而拆分,查找和替换字符串中匹配的子串。这些在第三章的String对象部分已经介绍了。具体正则表达式的规...

Javascript正则表达式

  • 2014年10月09日 20:12
  • 1.03MB
  • 下载

javascript正则表达式

  • 2012年09月13日 23:09
  • 2.57MB
  • 下载

Javascript中使用正则表达式替换回车符

问题 经常被中的回车符给困扰着,回车换行的内容(\r\n)经常需要显示为HTML中的,这时就需要做替换操作了。如果只是简单的将字符串strObj调用replace()方法,则结果只替换第一个回车...
  • ylchou
  • ylchou
  • 2012年03月20日 12:33
  • 18235
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaScript正则表达式入门
举报原因:
原因补充:

(最多只允许输入30个字)