正則表達(dá)式

一胡岔、創(chuàng)建一個正則表達(dá)式

你可以使用以下兩種方法構(gòu)建一個正則表達(dá)式:

1.1 使用一個正則表達(dá)式字面量

其由包含在斜杠之間的模式組成可训,如下所示:

const re = /ab+c/;

腳本加載后蟆豫,正則表達(dá)式字面量就會被編譯棍潘。當(dāng)正則表達(dá)式保持不變時(shí)裕偿,使用此方法可獲得更好的性能尊剔。

1.2 調(diào)用RegExp對象的構(gòu)造函數(shù)

如下所示:

let re = new RegExp("ab+c");

在腳本運(yùn)行過程中爪幻,用構(gòu)造函數(shù)創(chuàng)建的正則表達(dá)式會被編譯。如果正則表達(dá)式將會改變须误,或者它將會從用戶輸入等來源中動態(tài)地產(chǎn)生挨稿,就需要使用構(gòu)造函數(shù)來創(chuàng)建正則表達(dá)式。

二京痢、編寫一個正則表達(dá)式的模式

2.1 使用簡單模式

簡單模式是由你想直接找到的字符構(gòu)成奶甘。

比如:

/abc/ 這個模式就能且僅能匹配 "abc" 字符按照順序同時(shí)出現(xiàn)的情況。

在"Hi, do you know your abc's?" 和 "The latest airplane designs evolved from slabcraft."中會匹配成功祭椰。

上述兩個例子中甩十,匹配的子字符串是 "abc"船庇。但是在 "Grab crab" 中會匹配失敗,因?yàn)樗m然包含子字符串 "ab c"侣监,但并不是準(zhǔn)確的 "abc"鸭轮。

2.2 使用特殊字符

當(dāng)你需要匹配一個不確定的字符串時(shí),比如尋找一個或多個 "b"橄霉,或者尋找空格窃爷,可以在模式中使用特殊字符。

比如:

你可以使用 /abc/ 去匹配一個單獨(dú)的 "a" 后面跟了零個或者多個 "b"姓蜂,同時(shí)后面跟著 "c" 的字符串按厘,的意思是前一項(xiàng)出現(xiàn)零次或者多次。

在字符串 "cbbabbbbcdebc" 中钱慢,這個模式匹配了子字符串 "abbbbc"逮京。

1.常用元字符
表達(dá)式 可匹配
\d 任意一個數(shù)字,0~9 中的任意一個
\w 任意一個字母或數(shù)字或下劃線束莫,也就是 A-Z,a-z,0~9,_ 中任意一個
\s 包括空格懒棉、制表符、換頁符等空白字符的其中任意一個
. 小數(shù)點(diǎn)可以匹配除了換行符(\n)以外的任意一個字符
\b 匹配單詞(起始位置必須是各種空白符)的開始或結(jié)束
^ 匹配字符串的開始
$ 匹配字符串的結(jié)束
2.常用的限定符
表達(dá)式 說明
* 重復(fù)零次或更多次
+ 重復(fù)一次或更多次
览绿? 重復(fù)零次或一次
{n} 重復(fù)n次
{n,} 重復(fù)n次或更多次
{n,m} 重復(fù)n次或m次

三策严、使用正則表達(dá)式

方法 描述
exec 一個在字符串中執(zhí)行查找匹配的 RegExp 方法,它返回一個數(shù)組(未匹配到則返回 null)饿敲。
test 一個在字符串中測試是否匹配的 RegExp 方法妻导,它返回 true 或 false。
match 一個在字符串中執(zhí)行查找匹配的 String 方法怀各,它返回一個數(shù)組倔韭,在未匹配到時(shí)會返回 null。
matchAll 一個在字符串中執(zhí)行查找所有匹配的 String 方法瓢对,它返回一個迭代器(iterator)狐肢。
search 一個在字符串中測試匹配的 String 方法,它返回匹配到的位置索引沥曹,或者在失敗時(shí)返回 -1份名。
replace 一個在字符串中執(zhí)行查找匹配的 String 方法,并且使用替換字符串替換掉匹配到的子字符串妓美。
split 一個使用正則表達(dá)式或者一個固定字符串分隔一個字符串僵腺,并將分隔后的子字符串存儲到數(shù)組中的 String 方法。

以exec為例:

const regex = /d(b+)d/g;
const regArray = regex.exec("cdbbdbsbz");

如果你不需要訪問正則表達(dá)式的屬性壶栋,這個腳本通過另一個方法來創(chuàng)建 myArray:

const regArray = /d(b+)d/g.exec("cdbbdbsbz");
// 和 "cdbbdbsbz".match(/d(b+)d/g); 相似辰如。
// 但是 "cdbbdbsbz".match(/d(b+)d/g) 輸出數(shù)組 [ "dbbd" ],
// 而 /d(b+)d/g.exec('cdbbdbsbz') 輸出數(shù)組 [ "dbbd", "bb", index: 1, input: "cdbbdbsbz" ].

如果你想通過一個字符串構(gòu)建正則表達(dá)式贵试,那么這個腳本還有另一種方法:

const regex = new RegExp("d(b+)d", "g");
const regArray = regex.exec("cdbbdbsbz");

四琉兜、常用正則合集


1凯正、校驗(yàn)合法url

/^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/

2、校驗(yàn)手機(jī)號碼

/^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[289])\d{8}$/

3豌蟋、校驗(yàn)國內(nèi)座機(jī)電話

/\d{3}-\d{8}|\d{4}-\d{7}/

4廊散、校驗(yàn)身份證

/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/

5、校驗(yàn)車牌號

/^(([京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領(lǐng)][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領(lǐng)][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9掛學(xué)警港澳使領(lǐng)]))$/

6梧疲、校驗(yàn)email地址

/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/

7允睹、檢驗(yàn)賬號名稱(只能由字母、數(shù)字幌氮、下劃線組成缭受,且以字母開頭,8-20位)

/^[a-zA-Z][a-zA-Z0-9_]*{8,20}$/

8该互、檢驗(yàn)密碼(8-20位含字母米者、數(shù)字的密碼)

/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,20}$/

9、純字母

/^[a-zA-Z]*$/

10宇智、純中文

/^[\u4E00-\u9FA5]/

11蔓搞、整數(shù)

/^-?\d+$/

12、整數(shù)且大于0

/^([1-9]\d*(\.\d+)?|0)$/

13普筹、小數(shù)

/^\d+\.\d+$/

14败明、正整數(shù)隘马、小數(shù)或0

/^\d+(\.?|(\.\d+)?)$/

15太防、上傳圖片類型

/image\/(png|jpg|jpeg|gif)$/

16、域名

/[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?/

17酸员、qq號

/^[1-9]*[1-9][0-9]*$/

18蜒车、微信號

/^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/

19、ipv4地址

/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/

20幔嗦、日期格式酿愧,yyyy-mm-dd

/^\d{4}(-)\d{1,2}\1\d{1,2}$/

驗(yàn)證昵稱是否為中文、英文邀泉、數(shù)字或者下劃線嬉挡,且長度為1到10。

const regex = /^([\u4E00-\uFA29]|[\uE7C7-\uE7F3]|[a-zA-Z0-9_]){1,10}$/;
regex.test('xdsfsf是否fs')

參考鏈接:

MDN正則表達(dá)式

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末汇恤,一起剝皮案震驚了整個濱河市庞钢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌因谎,老刑警劉巖基括,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異财岔,居然都是意外死亡风皿,警方通過查閱死者的電腦和手機(jī)河爹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桐款,“玉大人咸这,你說我怎么就攤上這事÷沉牛” “怎么了炊苫?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長冰沙。 經(jīng)常有香客問我侨艾,道長,這世上最難降的妖魔是什么拓挥? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任唠梨,我火速辦了婚禮,結(jié)果婚禮上侥啤,老公的妹妹穿的比我還像新娘当叭。我一直安慰自己,他們只是感情好盖灸,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布蚁鳖。 她就那樣靜靜地躺著,像睡著了一般赁炎。 火紅的嫁衣襯著肌膚如雪醉箕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天徙垫,我揣著相機(jī)與錄音讥裤,去河邊找鬼。 笑死姻报,一個胖子當(dāng)著我的面吹牛己英,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吴旋,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼损肛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了荣瑟?” 一聲冷哼從身側(cè)響起治拿,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎褂傀,沒想到半個月后忍啤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年同波,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鳄梅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡未檩,死狀恐怖戴尸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情冤狡,我是刑警寧澤孙蒙,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站悲雳,受9級特大地震影響挎峦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜合瓢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一坦胶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晴楔,春花似錦顿苇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至则果,卻和暖如春幔翰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背短条。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工导匣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留才菠,地道東北人茸时。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像赋访,于是被迫代替她去往敵國和親可都。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容