javascript基礎(正規表示式)(二十四)

厚積薄發2017發表於2017-02-08

1.正規表示式簡介:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			/*
			 * 
			 * 	 - 使用者在網頁上瀏覽時,往往需要向伺服器傳送
			 * 		如:使用者名稱 密碼 電子郵件 QQ號 手機號。。。
			 * 	 - aaaa.com 
			 * 	 - xxxxx@xxxx.com.cn
			 * 	 - 前邊亂七八糟,後邊一個@,然後再亂七八糟,然後在點,然後再亂七八糟
			 * 
			 * 正規表示式
			 * 	 - 正規表示式用來定義一規則,計算機可以根據這些規則
			 * 		來判斷一個字串是否符合規則,或者從一個字串中將符合規則的內容提取出來
			 */
			
			//建立一個正規表示式的物件
			//語法:var 變數 = new RegExp("正規表示式","匹配模式");
			//a這個正規表示式,表示檢查一個字串中是否有a
			//在正則的建構函式中,可以傳遞一個匹配模式的字串作為第二個引數
			//g 全域性匹配模式     i 忽略大小寫匹配
			var reg = new RegExp("abcd","i");
			
			//使用typeof來檢查正則,會返回object
			//console.log(typeof reg);
			//建立一個字串
			var str = "Acb";
			
			/*
			 * 正規表示式中有一個方法 test()
			 * 	他可以用來檢查一個字串是否符合正規表示式的要求
			 * 	如果符合則返回true,否則返回false
			 */
			var result = reg.test(str);
			
			console.log(result);
			
			
		</script>
	</head>
	<body>
	</body>
</html>

2.建立正規表示式方法二:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			
			//var reg = new RegExp();
			
			/*
			 * 建立正規表示式方式二:
			 * 	
			 * 	var 變數 = /正規表示式/匹配模式;
			 */
			
			var reg = new RegExp("a","i");
			
			reg = /a/i;
			
			//console.log( reg.test("Abc") );
			
			
			//建立一個正規表示式,檢查一個字串中是否含有a或b
			/*
			 * | 表示或者
			 */
			reg = /a|b|c/;
			
			//建立一個正規表示式,表示任意的小寫字母
			reg = /a|b|c|d|e|f|h|i|j|k/;
			
			/*
			 * [] 中括號中的內容也表示或
			 * 	[a-z] 任意的小寫字母
			 * 	[A-z] 任意字母
			 * 	[0-9] 任意數字
			 * 
			 * [^  ] 表示除了括號中的內容
			 */
			reg = /[abc]/;
			
			reg = /[a-z]/;
			
			reg = /[A-z]/;
			
			reg = /[0-9]/;
			
			//檢查一個字串中是否含有abc 或 adc 或aec
			reg = /abc|adc|aec/;
			
			reg = /a[bde]c/;
			
			//除了小寫字母
			reg = /[^a-z]/;
			
			//除了小寫字母和數字
			reg = /[^a-z0-9]/;
			
			
			var result = reg.test("babccdef1");
			
			console.log(result);
			
			
		</script>
	</head>
	<body>
	</body>
</html>

3.字串和正則相關的方法:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			
			/*
			 * split()
			 * 	- 可以將一個字串拆分為一個陣列
			 * 	- 這個方法中可以傳遞一個正規表示式作為引數,這樣將會根據正規表示式去拆分字串
			 * 	- split()拆分字串,無論是否指定全域性匹配,都會全都拆
			 */
			
			var str = "a@b@c@d@e";
			
			str = "中abc國adc萬aec歲aec!";
			
			var reg = /a[bde]c/;
			
			var result = str.split(reg);
			
			//console.log(result);
			
			/*
			 * search()
			 * 	- 可以用來搜尋一個字串中是否含有指定內容
			 * 	- 如果查詢到了,會返回它第一次出現的索引,如果沒找到則返回-1
			 * 	- 也可以接收一個正規表示式作為引數,將會根據正規表示式去字串中查詢內容
			 * 	- search()只會匹配第一個,即使加了全域性匹配
			 */
			str = "hello abc hello how are you aec";
			
			reg = /a[bde]c/g;
			
			//查詢字串中是否有abc 或 adc 或 aec
			result = str.search(reg);
			
			console.log(result);
			
			/*
			 * match()
			 * 	- 根據正規表示式將字串中符合要求的內容提取出來
			 * 	- 預設情況match()只會匹配到第一個符合條件的內容,
			 * 		如果需要匹配所有的內容,則需要設定全域性匹配模式
			 * 	- match()方法會將匹配到的內容封裝到一個陣列中返回,
			 * 		即使只匹配到了一個,也會儲存到陣列中
			 * 	- 匹配模式可以不寫,也可以同時寫多個,並且順序不限
			 * 	
			 */
			str = "aBcasdasdadcsdasdaecasdafc";
			
			reg = /a[bdef]c/ig;
			
			result = str.match(reg);
			
			/*
			 * replace()
			 * 	- 可以將字串的指定內容,替換為新的內容
			 * 	- 引數:
			 * 		第一個,被替換的內容,可以是一個正規表示式
			 * 		第二個,新的內容
			 */
			str = "aBcasdasdadcsdasdaecasdafc";
			
			//將字串中的a,替換為 孫悟空
			result = str.replace(/a/g,"孫悟空");
			result = str.replace(reg,"孫悟空");
			
			//console.log(result);
			
			
			
		</script>
	</head>
	<body>
	</body>
</html>

4.正規表示式量詞:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			
			//建立一個正規表示式,檢查一個字串中是否含有abc
			var reg = /abc/;
			
			//建立一個正規表示式,檢查一個字串中是否含有bbb
			reg = /b{3}/;
			
			/*
			 * 量詞
			 * 	- 量詞用來表示一個內容出現的次數
			 * 	- {n} 正好出現n次
			 * 	- {m,n} 出現m-n次
			 * 	- {n,} 至少n次
			 * 	- + 至少出現1次,相當於{1,}
			 * 	- * 0個或多個,相當於{0,}
			 * 	- ? 0個或1個,相當於{0,1}
			 */
			
			//建立一個正規表示式,檢查一個字串中是否有ababab
			reg = /(ab){3}/;
			
			reg = /ab{3}c/;
			
			reg = /ab{1,3}c/;
			
			reg = /ab{3,}c/;
			
			reg = /ab+c/;
			
			reg = /ab*c/;
			
			reg = /ab?c/;
			
			
			var result = reg.test("abbc");
			
			//console.log(result);
			
			/*
			 * ^ 表示開頭
			 * $ 表示結尾	
			 */
			
			//建立一個正規表示式,檢查一個字串是否以a開頭
			reg = /^a/;
			
			//建立一個正規表示式,檢查一個字串是否以a結尾
			reg = /a$/;
			
			//使用^開頭 $結尾的正規表示式,必須字串和正規表示式完全匹配才會返回true
			reg = /^a$/;
			
			reg = /^a{3}$/;
			
			result = reg.test("aaa");
			
			//console.log(result);
			
			/*
			 * 檢查一個字串是否是一個有效的手機號
			 * 	
			 * 手機號是11位的純數字
			 * 
			 * 1      3      567890123
			 * 
			 * 以1開頭     3-9之間的任意數字      0-9之間的任意數字9個
			 * 
			 * 	^1    [3-9]      [0-9]{9}$ 
			 * 
			 */
			var phoneReg = /^1[3-9][0-9]{9}$/;
			
			var phone = "17567890123";
			
			console.log(phoneReg.test(phone));
			
			
		</script>
	</head>
	<body>
	</body>
</html>

5.正規表示式的其他字元補充:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			
			var str = "@";
			
			//建立一個正規表示式,檢查一個字串中是否含有.
			var reg = /./;
			
			var result = reg.test(str);
			
			/*
			 * . 在正則中代表任意字元
			 * 
			 * 在正規表示式中,可以使用 \ 作為轉義字元
			 * \. 來表示.
			 * \\ 表示\
			 */
			
			str = "abcbcd";
			
			reg = /\./;
			
			//當使用建構函式來建立正規表示式時,由於它的正則是以字串的形式傳遞的
			//而\在字串中也是轉義字串,所以這裡需要使用\\來表示一個
			reg = new RegExp("\\.");
			
			str = "abcdefg\\";
			
			reg = /\\/;
			
			reg = new RegExp("\\\\");
			
			
			//console.log(reg);
			
			result = reg.test(str);
			
			//console.log(result);
			
			/*
			 * \w
			 * 		- 相當於[A-z0-9_]
			 * 		- 任意字母數字下劃線
			 * \W
			 * 		- 相當於[^A-z0-9_]
			 * 		- 除了字母數字下劃線
			 * \d
			 * 		- 任意數字
			 * \D
			 * 		- 除了數字
			 * \s
			 * 		- 空格
			 * \S
			 * 		- 除了空格
			 * \b
			 * 		- 單詞邊界
			 * \B
			 * 		- 除了單詞邊界
			 */
			
			reg = /\w/;
			reg = /\W/;
			reg = /\d/;
			reg = /\D/;
			reg = /\s/;
			reg = /\S/;
			
			result = reg.test("abc");
			
			//console.log(result);
			
			//建立一個正規表示式,檢查一個字串中是否含有child這個單詞
			reg = /\bchild\b/;
			
			result = reg.test("child hello ");
			
			//console.log(result)
			
			
			//使用者通過頁面輸入一個內容
			var username = prompt("請輸入一個使用者名稱:");
			
			/*
			 * 去除字串中的前後空格
			 * 	實際上就是將字串中的空格替換為空串
			 */
			console.log(username);
			
			//username = username.replace(/\s/g , "");
			//username = username.replace(/^\s*/ , "");
			username = username.replace(/^\s*|\s*$/g , "");
			
			//console.log(username);
			
			/*
			 	編寫電子郵件的正規表示式
			 	
			 */
			
		</script>
	</head>
	<body>
	</body>
</html>


6.郵件的正規表示式例項:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			
			/*
			 * 
			 * 郵件的正規表示式
			 * 	abc              .hello                      @      abc        .com            .cn
			 * 
			 *  開頭 字母 數字 下劃線 一位以上      \.任意字母數字下劃線 一位以上          @      字母數字一位以上        \.字母(2-5位)           \.字母(2-5位)                     
			 * 
			 * ^\w+    (\.\w+)*    @  [A-z0-9]+  (\.[A-z]{2,5}){1,2}$
			 * 
			 * 
			 * 
			 */
			
			var emailReg = /^\w+(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;
			
			var email = "hello.hello@abc.com.cn";
			
			console.log(emailReg.test(email));
			
			
		</script>
	</head>
	<body>
		<h1>文字</h1>
		<p></p>
		<a href="#">超連結</a>
		<!--我是一個註釋-->
	</body>
</html>









相關文章