JS學習日記--正則基礎語法

一、正則表達式

正則表達式是由普通字符及特殊字符組成的對字符串進行過濾的邏輯公式

創建方式

  • 字符量的方式:
    var reg = /abc/;

  • 構造函數
    var reg = new RegExp(“abc”);

二、正則表達式方法

方法名 作用 返回值
test 檢測是否有符合表達式規則的子串 有返回true,否則返回false
match 檢索指定的值 這些值組成的數組
search 查找符合規則的子串 第一個匹配成功的位置
split 分割 返回數組
replace 替換 返回替換後的值
exec 將匹配成功的放到數組裏 匹配成功的值,沒有成功則返回null

注:exec如果要全部輸出,需要多次調用,一次只能輸出一個

		<script type="text/javascript">
			/*創建方法*/
			var reg=/abc/;//1.字面量的方式
			var  reg=new RegExp("abc");//2.構造函數
			/*方法*/
			 //test方法 用來檢測是否有符合表達式規則的子串,有返回true,無返回false
			var str="aabcd";
			console.log(reg.test(str));
			//修飾符 g  i 
			//g表示全局匹配
			//i不區分大小寫
		//match方法 檢索指定的值 返回值也是這些指定的值組成的數組
			var reg=/abc/ig;
			var str="aAbcabc";
			console.log(str.match(reg));
			//seach方法,查找符合規則的子串的位置,只返回第一個匹配的位置
			var reg=/abc/;
			var str="12abc4";
			console.log(str.search(reg));
			//split  分割 返回數組
			var reg=/ /;
			var str="good good study";
			console.log(str.split(reg));
			//replace 替換
			var reg=/aaa/ig;
			var str="aaa aaa study";
			console.log(str.replace(reg,"good"));
			//exe方法,將匹配成功的方法放到數組裏,如果沒有匹配成功,返回null
			//如果要全部輸出 則需要多次調用,一次只能輸出一個
			var reg=/good/g;
			var str="good good study";
			console.log(reg.exec(str));
			console.log(reg.exec(str));
			console.log(reg.exec(str));
		</script>
輸出:
true
Array(2)
2
Array(3)
good good study
Array(1)
Array(1)
nul

三、正則表達式中的特殊字符

字符 作用
. 代表除了換行符外的所有單個字符
* 重複多次匹配(0-n)
+ 至少一次重複匹配
進行零次或者一次匹配
[ ] 表示可以匹配到的範圍
\w 數字字母下劃線
\W 非數字字母下劃線
\d 表示數字
\D 非數字
\s 匹配空格
{m,n} 至少匹配m次,最多匹配n次
/^ 匹配開始
$/ 匹配結束
() 分組 將內容作爲一個整體進行匹配
$1,$2 代表分組的元素
		<script type="text/javascript">
			//. 除了換行符外的所有單個字符
			var reg=/g..d/gi;
			var str="goodg--dg/-d";
			console.log(reg.test(str),str.match(reg));
			//* 重複多次匹配,匹配任意次(0-n),只作用於前一個字符
			var reg=/go*d/gi;
			var str="goodgogod";
			console.log(reg.test(str),str.match(reg));
			//+ 至少有一次重複匹配
			var reg=/go+d/gi;
			var str="goodgdgodgoooood";
			console.log(reg.test(str),str.match(reg));
			//? 進行零次或者一次匹配
			var reg=/go?d/gi;
			var str="gdgodgood";
			console.log(reg.test(str),str.match(reg));
			//[] 表示可以匹配到的範圍
			var reg=/[a-z]+/gi;
			var str="asjfij";
			console.log(reg.test(str),str.match(reg));
			//\w 代表數字字母下劃線 等同於[0-9a-zA-Z_] W\非數字字母下劃線
			var reg=/\w+/ig;
			var str="s4989_*";
			console.log(reg.test(str),str.match(reg));
			//\d 表示數字  \D非數字
			var reg=/\d+/gi;
			var str="1234s4";
			console.log(reg.test(str),str.match(reg));
			//\s 匹配空格
			var reg=/\s+/gi;
			var str="good good      study";
			console.log(str.replace(reg,""));
			//{m,n} 至少匹配m次,至多匹配n次
			var reg=/go{3,6}d/ig;
			var str="goooodgoodgoooooood";
			console.log(reg.test(str),str.match(reg));
			// /^ 匹配開始 $/ 匹配結束
			var reg=/^g.*g$/gi;
			var str="goodgd";
			console.log(reg.test(str),str.match(reg));
			// | 或
			var reg=/google|baidu|yahoo/gi;
			var str="www.baidu.com";
			console.log(reg.test(str),str.match(reg));
			// () 分組 將內容作爲一個整體進行匹配
			var reg=/(good){2,3}/gi
			var str="goodgoodagood"
			console.log(reg.test(str),str.match(reg));
			console.log(RegExp.$1);
			//$1 $2 代表分組的元素
			var reg=/(.*)\s(.*)/;
			var str="taobao baidu";
			console.log(str.replace(reg,"$2 $1"));
		</script>
輸出:
true Array(3) 0:"good" 1:"g--d" 2:"g/-d"
true Array(2) 0:"good" 1:"god"
true Array(3) 0:"good" 1:"god" 2:"goooood"
true Array(2) 0:"gd" 1:"god"
true Array(1) 0:"asjfij"
true Array(1) 0:"s4989_"
true Array(2) 0:"1234" 1:"4"
goodgoodstudy
true Array(1) 0:"gooood"
false null
true Array(1) 0:"baidu"
true Array(1) 0:"goodgood"
good
baidu taobao

四、一個小例子

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>用戶名規範</title>
		<script type="text/javascript">
			window.onload=function()
			{
				var oInput=document.getElementById("username");
				oInput.onchange=function()
				
				{
					var str=this.value;
					var reg=/^[a-zA-Z_]\w{5,14}$/;
					if(reg.test(str))
					{
						alert("格式正確");
					}else{
						alert("用戶名由數字,字母下劃線組成的 6-15位字符,且不能以數字開頭");
					}
				}
			}
		</script>
	</head>
	<body>
		用戶名:<input type="text" id="username" />
		
	</body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章