正則知識(shí)點(diǎn)
概念:
一個(gè)用于規(guī)范字符串的表達(dá)式。
簡(jiǎn)單來說,就是寫一個(gè)規(guī)則,然后通過這個(gè)規(guī)則可以從一個(gè)雜亂的字符串中找出符合規(guī)則的部分,也就可以用于判斷一個(gè)字符串是否符合某個(gè)規(guī)則。還可以將一個(gè)字符串中符合規(guī)則的部分進(jìn)行替換。
初體驗(yàn):
var reg = /aaa/; // 寫了一個(gè)規(guī)則,這個(gè)規(guī)則的意思是說3個(gè)a字符連在一起
var str = 'sdafaaaaa123wer'; // 一個(gè)雜亂的字符串
var arr = str.match(reg); // 從字符串中提取出符合規(guī)則的部分
console.log(arr); // ["aaa", index: 4, input: "sdafaaaaaa123wer"]
正則表達(dá)式其實(shí)就是一種規(guī)則,其實(shí)把正則稱作規(guī)則表達(dá)式更為恰當(dāng)。正則的語法基于一種古老的perl語言。
正則表達(dá)式的作用
-
提取字符串:從指定的字符串中將符合規(guī)則部分提取出來
-
匹配正則:判斷一個(gè)字符串是否跟指定的規(guī)則匹配
-
替換字符串:將一個(gè)字符串中跟規(guī)則匹配的部分替換掉
正則表達(dá)式的創(chuàng)建
語法:/正則表達(dá)式主體/修飾符(可選)
var reg = new RegExp() // 構(gòu)造函數(shù)方式
var reg = /hello/i; // 字面量方式
使用說明:正則表達(dá)式比較特殊,不是字符串,不用加引號(hào),但是要有定界符,兩邊都是斜杠。在斜杠后面可以加一些特定的修飾符。
修飾符
| 標(biāo)志 | 說明 |
|---|---|
| i | 忽略大小寫 |
| g | 全局匹配,貪婪模式 |
| gi | 全局匹配+忽略大小寫 |
正則表達(dá)式的組成
-
普通字符
-
特殊字符(元字符):正則表達(dá)式中有特殊意義的字符
元字符
常用元字符串
| 元字符 | 說明 |
|---|---|
| \d | 匹配數(shù)字 |
| \D | 匹配任意非數(shù)字的字符 |
| \w | 匹配字母或數(shù)字或下劃線 |
| \W | 匹配任意不是字母,數(shù)字,下劃線 |
| \s | 匹配任意的空白符 |
| \S | 匹配任意不是空白符的字符 |
| . | 匹配除換行符以外的任意單個(gè)字符 |
| ^ | 表示匹配行首的文本(以誰開始) |
| $ | 表示匹配行尾的文本(以誰結(jié)束) |
限定符
| 限定符 | 說明 |
|---|---|
| * | 重復(fù)零次或更多次 |
| + | 重復(fù)一次或更多次 |
| ? | 重復(fù)零次或一次 |
| {n} | 重復(fù)n次 |
| {n,} | 重復(fù)n次或更多次 |
| {n,m} | 重復(fù)n到m次 |
其它
[] 字符串用中括號(hào)括起來,表示匹配其中的任一字符,相當(dāng)于或的意思
[^] 匹配除中括號(hào)以內(nèi)的內(nèi)容
\ 轉(zhuǎn)義符
| 或者,選擇兩者中的一個(gè)。注意|將左右兩邊分為兩部分,而不管左右兩邊有多長(zhǎng)多亂
() 從兩個(gè)直接量中選擇一個(gè),分組
eg:gr(a|e)y匹配gray和grey
[\u4e00-\u9fa5] 匹配漢字
匹配字符串
字符串的匹配有兩個(gè)方法:
-
正則表達(dá)式.test(字符串):可以匹配為true,否則為false/\d/.test('13522336699') //true -
search()匹配成功 返回下標(biāo)位置,不成功返回-1其實(shí)可以理解為查找字符串中符合正則表達(dá)式的子字符串的位置
var str = 'www.baidu.com'
str.search(/baidu/) // 4
提取字符串
語法:match(正則表達(dá)式)
例:
var reg = /aaa/g; // 貪婪匹配
var str = 'sdafaaaaaa123wer';
var arr = str.match(reg);
console.log(arr); // ["aaa", "aaa"]
語法:正則表達(dá)式.exec(字符串)
var reg = /(a)aa/g; // 貪婪匹配
var str = 'sdafaa aaaa123wer';
var arr = reg.exec(str);
console.log(arr); // ["aaa", "a", index: 7, input: "sdafaa aaaa123wer"]
先匹配整體,再匹配小括號(hào)
案例
驗(yàn)證手機(jī)號(hào):
^\d{11}$
驗(yàn)證郵編:
^\d{6}$
驗(yàn)證郵箱 xxx@1000phone.com:
^\w+@\w+\.\w+$
提取
// 1. 提取工資
var str = "張三:1000,李四:5000,王五:8000。";
var array = str.match(/\d+/g);
console.log(array);
?
// 2. 提取email地址
var str = "123123@xx.com,fangfang@valuedopinions.cn 286669312@qq.com 2、emailenglish@emailenglish.englishtown.com 286669312@qq.com...";
var array = str.match(/\w+@\w+\.\w+(\.\w+)?/g);
console.log(array);
替換字符串
語法:字符串.replace(正則表達(dá)式,新內(nèi)容)
var str = 'i love html very much and html is very good';
var reg = /html/g;
var res = str.replace(reg,'js');
console.log(res); // i love js very much and js is very good
引用替換:
var str = '8/1/2019';
var reg = /(\d)\/(\d)\/(\d+)/;
var res = str.replace(reg,"$3/$1/$2");
console.log(res);
案例
-
手機(jī)號(hào)檢測(cè)
var reg = /^1[345789]\d{9}$/;
-
身份證檢測(cè)
var reg = /^[1-9]\d{16}([0-9]|X)$/;
-
日期檢測(cè)
-
中文檢測(cè)
var reg = /[\u4e00-\u9fa5]/;
-
用戶名檢測(cè)
-
字符串過濾
-
正則$符的應(yīng)用
正則的學(xué)習(xí)目標(biāo)

什么是正則?

三大功能(方便)
做字符串提取

做字符串替換

正則的學(xué)習(xí)
就是在學(xué)習(xí)怎么寫規(guī)則, - 然后使用規(guī)則
正則的定義 - 屬于對(duì)象

使用正則的五個(gè)方法

正則規(guī)則


總結(jié)








常見規(guī)則


郵箱規(guī)則

錯(cuò)誤解析

表單驗(yàn)證

posted on 2022-03-28 17:41 金子fa 閱讀(77) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)