JS正則表達(dá)式

一. 正則表達(dá)式

正則表達(dá)式:其實(shí)就是一種匹配規(guī)則控淡,用于檢索字符串

定義正則表達(dá)式的兩種方式:1.直接定義 2.構(gòu)造函數(shù)定義

那么正則表達(dá)式正則強(qiáng)大的地方是它可以寫(xiě) 通配符(擁有特殊含義的字符)

二.?通配符

\w 表示:字母、數(shù)字止潘、下劃線

\W 表示:除了字母掺炭、數(shù)字、下劃線以外的字符

\d 表示:數(shù)字

\D 表示:非數(shù)字

^ 表示:以^符號(hào)后面的第一個(gè)字符開(kāi)頭

表示:以表示:以符號(hào)前面的第一個(gè)字符結(jié)尾

{n} 表示:重復(fù)n次

{n,m} 表示:重復(fù)n到m次

[xyz] 表示:其中任意一個(gè)字符

+ 表示:重復(fù)前一項(xiàng)1次或多次 等價(jià)于 {1,}

* 表示:重復(fù)前一項(xiàng)0次或多次 等價(jià)于 {0,}

? 表示:重復(fù)前一項(xiàng)0次或1次 等價(jià)于 {0,1}

. 表示:除了換行符以外的任意一個(gè)字符

\. 表示:.字符 ^ 表示:^ \表示:表示:

可以用()將多個(gè)字符作為一個(gè)整體

\w 等價(jià)于 [0-9a-zA-Z_]

| 表示:或者

[\u4E00-\u9FA5] 是常用漢字的unicode編碼范圍

三. 正則練習(xí)

四. 正則表達(dá)式配合字符串的方法

replace()方法

默認(rèn)情況下凭戴,replace()方法涧狮,只會(huì)替換字符串中匹配的第一段內(nèi)容

使用正則表達(dá)式,添加全局匹配修飾符g么夫,可以替換匹配全部?jī)?nèi)容

使用正則表達(dá)式者冤,添加忽略大小寫(xiě)修飾符i,在匹配內(nèi)容時(shí)會(huì)忽略大小寫(xiě)

search()方法

可以通過(guò)正則表達(dá)式查找位置

五. 添加學(xué)生練習(xí)

<!DOCTYPE html>

<html>

<head>

? ? <meta charset="UTF-8">

? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">

? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">

? ? <title>添加學(xué)生</title>

? ? <style>

? ? ? ? .err{

? ? ? ? ? ? color: red;

? ? ? ? }

? ? ? ? .ok{

? ? ? ? ? ? color: green;

? ? ? ? }

? ? </style>

</head>

<body>

? ? <form>

? ? ? ? <table>

? ? ? ? ? ? <tr>

? ? ? ? ? ? ? ? <td>姓名:</td>

? ? ? ? ? ? ? ? <td>

? ? ? ? ? ? ? ? ? ? <input type="text" id="name">

? ? ? ? ? ? ? ? ? ? <span id="nameMsg"></span>

? ? ? ? ? ? ? ? </td>

? ? ? ? ? ? </tr>

? ? ? ? ? ? <tr>

? ? ? ? ? ? ? ? <td>年齡:</td>

? ? ? ? ? ? ? ? <td>

? ? ? ? ? ? ? ? ? ? <input type="text" id="age">

? ? ? ? ? ? ? ? ? ? <span id="ageMsg"></span>

? ? ? ? ? ? ? ? </td>

? ? ? ? ? ? </tr>

? ? ? ? ? ? <tr>

? ? ? ? ? ? ? ? <td>性別:</td>

? ? ? ? ? ? ? ? <td>

? ? ? ? ? ? ? ? ? ? <input checked name="sex" type="radio" value="0">男

? ? ? ? ? ? ? ? ? ? <input name="sex" type="radio" value="1">女

? ? ? ? ? ? ? ? </td>

? ? ? ? ? ? </tr>

? ? ? ? ? ? <tr>

? ? ? ? ? ? ? ? <td>愛(ài)好:</td>

? ? ? ? ? ? ? ? <td>

? ? ? ? ? ? ? ? ? ? <input name="hobby" type="checkbox" value="抽煙">抽煙

? ? ? ? ? ? ? ? ? ? <input name="hobby" type="checkbox" value="喝酒">喝酒

? ? ? ? ? ? ? ? ? ? <input name="hobby" type="checkbox" value="燙頭">燙頭

? ? ? ? ? ? ? ? ? ? <input name="hobby" type="checkbox" value="睡覺(jué)">睡覺(jué)

? ? ? ? ? ? ? ? </td>

? ? ? ? ? ? </tr>

? ? ? ? ? ? <tr>

? ? ? ? ? ? ? ? <td>年級(jí):</td>

? ? ? ? ? ? ? ? <td>

? ? ? ? ? ? ? ? ? ? <select id="grade">

? ? ? ? ? ? ? ? ? ? ? ? <option value="0">請(qǐng)選擇</option>

? ? ? ? ? ? ? ? ? ? ? ? <option value="1">大一</option>

? ? ? ? ? ? ? ? ? ? ? ? <option value="2">大二</option>

? ? ? ? ? ? ? ? ? ? ? ? <option value="3">大三</option>

? ? ? ? ? ? ? ? ? ? ? ? <option value="4">大四</option>

? ? ? ? ? ? ? ? ? ? </select>

? ? ? ? ? ? ? ? ? ? <span id="gradeMsg">必須要選擇一個(gè)年級(jí)</span>

? ? ? ? ? ? ? ? </td>

? ? ? ? ? ? </tr>

? ? ? ? ? ? <tr>

? ? ? ? ? ? ? ? <td>郵箱:</td>

? ? ? ? ? ? ? ? <td>

? ? ? ? ? ? ? ? ? ? <input type="text" id="email">

? ? ? ? ? ? ? ? ? ? <span id="emailMsg">請(qǐng)輸入正確的郵箱格式</span>

? ? ? ? ? ? ? ? </td>

? ? ? ? ? ? </tr>

? ? ? ? ? ? <tr>

? ? ? ? ? ? ? ? <td>電話:</td>

? ? ? ? ? ? ? ? <td>

? ? ? ? ? ? ? ? ? ? <input type="text" id="phone">

? ? ? ? ? ? ? ? ? ? <span id="phoneMsg">請(qǐng)輸入正確的電話格式</span>

? ? ? ? ? ? ? ? </td>

? ? ? ? ? ? </tr>

? ? ? ? ? ? <tr>

? ? ? ? ? ? ? ? <td>生日:</td>

? ? ? ? ? ? ? ? <td>

? ? ? ? ? ? ? ? ? ? <input type="text" id="bornDate">

? ? ? ? ? ? ? ? ? ? <span id="bornDateMsg">請(qǐng)輸入正確日期格式</span>

? ? ? ? ? ? ? ? </td>

? ? ? ? ? ? </tr>

? ? ? ? ? ? <tr>

? ? ? ? ? ? ? ? <td></td>

? ? ? ? ? ? ? ? <td>

? ? ? ? ? ? ? ? ? ? <button type="submit">提交</button>

? ? ? ? ? ? ? ? ? ? <button type="reset">重置</button>

? ? ? ? ? ? ? ? </td>

? ? ? ? ? ? </tr>

? ? ? ? </table>

? ? </form>

? ? <script>

? ? ? ? //獲取姓名文本框

? ? ? ? let name = document.querySelector('#name')

? ? ? ? //獲取年齡文本框

? ? ? ? let age = document.querySelector('#age')

? ? ? ? //表單的提交事件

? ? ? ? document.querySelector('form').onsubmit = function(){

? ? ? ? ? ? // 返回true提交表單档痪,返回false不提交表單

? ? ? ? ? ? if(checkName() & checkAge()){

? ? ? ? ? ? ? ? return true

? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? return false

? ? ? ? ? ? }

? ? ? ? }


? ? ? ? //姓名文本框失去焦點(diǎn)

? ? ? ? name.onblur = checkName

? ? ? ? //驗(yàn)證姓名

? ? ? ? function checkName(){

? ? ? ? ? ? //定義驗(yàn)證姓名的正則

? ? ? ? ? ? let reg = /^[\u4E00-\u9FA5]{2,4}$/

? ? ? ? ? ? // 調(diào)用驗(yàn)證方法

? ? ? ? ? ? return checkInput("#nameMsg",name,reg,'姓名正確','姓名必須是2-4位漢字')

? ? ? ? }

? ? ? ? //年齡文本框失去焦點(diǎn)

? ? ? ? age.onblur = checkAge

? ? ? ? //驗(yàn)證年齡

? ? ? ? function checkAge(){

? ? ? ? ? ? //定義驗(yàn)證年齡的正則

? ? ? ? ? ? let reg = /^\d{1,2}$|^1([0-1]\d)|20$/

? ? ? ? ? ? // 調(diào)用驗(yàn)證方法

? ? ? ? ? ? return checkInput("#ageMsg",age,reg,'年齡正確','年齡必須是0-120之間')

? ? ? ? }

? ? ? ? //驗(yàn)證方法譬嚣,參數(shù)分別是:span元素Id,表單元素對(duì)象钞它,正則規(guī)則拜银,驗(yàn)證成功消息,驗(yàn)證失敗消息

? ? ? ? function checkInput(spanId,_this,reg,okMsg,errMsg){

? ? ? ? ? ? // 獲取消息span

? ? ? ? ? ? let span = document.querySelector(spanId)

? ? ? ? ? ? //獲取信息

? ? ? ? ? ? let val = _this.value

? ? ? ? ? ? if(!reg.test(val)){

? ? ? ? ? ? ? ? span.className="err"

? ? ? ? ? ? ? ? span.innerHTML = errMsg

? ? ? ? ? ? ? ? return false ?//驗(yàn)證失敗返回false

? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? span.className="ok"

? ? ? ? ? ? ? ? span.innerHTML = okMsg

? ? ? ? ? ? ? ? return true ?//驗(yàn)證成功返回true

? ? ? ? ? ? }

? ? ? ? }

? ? </script>

</body>

</html>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末遭垛,一起剝皮案震驚了整個(gè)濱河市尼桶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锯仪,老刑警劉巖泵督,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異庶喜,居然都是意外死亡小腊,警方通過(guò)查閱死者的電腦和手機(jī)救鲤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)秩冈,“玉大人本缠,你說(shuō)我怎么就攤上這事∪胛剩” “怎么了丹锹?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)芬失。 經(jīng)常有香客問(wèn)我楣黍,道長(zhǎng),這世上最難降的妖魔是什么棱烂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任租漂,我火速辦了婚禮,結(jié)果婚禮上颊糜,老公的妹妹穿的比我還像新娘哩治。我一直安慰自己,他們只是感情好芭析,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布锚扎。 她就那樣靜靜地躺著,像睡著了一般馁启。 火紅的嫁衣襯著肌膚如雪驾孔。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天惯疙,我揣著相機(jī)與錄音翠勉,去河邊找鬼。 笑死霉颠,一個(gè)胖子當(dāng)著我的面吹牛对碌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蒿偎,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼朽们,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了诉位?” 一聲冷哼從身側(cè)響起骑脱,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎苍糠,沒(méi)想到半個(gè)月后叁丧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年拥娄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚊锹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡稚瘾,死狀恐怖牡昆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情孟抗,我是刑警寧澤迁杨,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布钻心,位于F島的核電站凄硼,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏捷沸。R本人自食惡果不足惜摊沉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望痒给。 院中可真熱鬧说墨,春花似錦、人聲如沸苍柏。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)试吁。三九已至棺棵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間熄捍,已是汗流浹背烛恤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留余耽,地道東北人缚柏。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像碟贾,于是被迫代替她去往敵國(guó)和親币喧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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