常用正則方法

正則的創(chuàng)建方式

// 1.字面量方式
var expression = /pattern/flags;    // flags為查找的規(guī)則
var demo = /\d\d\d/;        // 匹配連續(xù)3位數(shù)字

// 2.構(gòu)造器方式
var expression = new RegExp('要匹配的字符串', flags)沃斤;      // flags可以是igm

正則字符的類型

正則表達式由兩種基本字符類組成

  • 原義文本字符
  • 元字符(元字符是在正則表達式中有特殊含義的非字母字符缠劝,如.*+?^等)

正則對象中的方法

compile(string) //改變正則的匹配規(guī)則

exec(string) //如果匹配就返回一個數(shù)組疆偿,不匹配就返回null

test(string) //返回Boolean值 true 或 false

toString() //以字符串的方式返回正則對象本身

// 1.compile
var reg = /abc/;
reg.compile("def");
reg.test("def");    //true

// 如原來要檢索wolf,但是我現(xiàn)在不想了响谓,要檢索ol
var regexpInstance = /wolf/;
regexpInstance.compile('ol');

// 2.exec(string)
// string為要檢索的字符串映凳,
// 返回一個數(shù)組州弟,其中存放匹配的結(jié)果速挑。如果未找到匹配暇咆,則返回值為 null
/abc/.exec("accbabcdddabccababc");  // ["abc", index: 4, input: "accbabcdddabccababc"]

// 3.test
/abc/.test("abcde");    // true
/f/.test("abcde");  // false

var str = '我是一匹來自北方的wolf';
var regExpInstence = /wolf/;
var value = regExpInstence.test(str);
console.log(value);  // true

// 4.toString
/abc/.toString();   // "/abc/"

正則對象檢索修飾符

  1. global 全局查找
  2. ignoreCase 忽略大小寫
  3. multiline 可換行查找(多行搜索)
/abc/gim.test("ABC");   // true
RegExp("abc","mgi");    

正則表達式基本語法

  1. ^代表以什么什么開始锋爪。如"^The":表示所有以"The"開始的字符串("There","The cat"等)
  2. $代表以什么什么結(jié)束爸业。如"of despair$":表示所以以"of despair"結(jié)尾的字符串
  3. g代表全局匹配其骄,知道找完字符串
  4. i代表忽略大小寫
  5. ? - 最多一次匹配(零次或一次匹配)
  6. ``+ - 至少一次匹配(一次或更多次匹配)`
  7. ?\bis\b 單詞分割線
  8. [abc] []是字符類,每個字符代表某一類扯旷,即a或b或c中任意一類都可以被匹配
  9. [^abc] 不匹配a或b或c類拯爽,其他的都匹配
  10. [a-z] 中橫線-是范圍類,通過中橫線-可以實現(xiàn)范圍

1.匹配與.xxx結(jié)尾的/\.(png|jpg|gif|svg)$/

var arr = ["123.png","456.jpg","789.gif","000.svg"];
arr.forEach(function(item, index){
  if (item.test(/\.(png|jpg|gif|svg)$/)) {
    //符合規(guī)則后執(zhí)行后面的邏輯
  }
})

2.不區(qū)分大小寫/a/gi

// 查找字符串中有多少個a,忽略大小寫
var str = 'wsyzxxxxnaDdA';
str.match(/a/gi);   // ["a", "A"]

正則對象的區(qū)別

全局正則對象和非全局正則的區(qū)別

與正則相關(guān)的字符串方法

  1. String.prototype.search
  2. String.prototype.replace
  3. String.prototype.match
  4. String.prototype.split
// 1. match(/regExp/g) :返回一個包含匹配內(nèi)容的數(shù)組或null
// 2. search(string/regExp):如果使用字符串作為參數(shù)钧忽,會自動轉(zhuǎn)換為正則表達式毯炮。返回第一個匹配內(nèi)容所在的位置
// 3. replace(string/regExp , newValue):將匹配的文本替換成指定的字符串
// 4. split():將目標字符串分割成若干個數(shù)組元素

案例

1. 全局檢索字符串中是否存在某個值
// regExpInstance.exec(str)
var str = '我是一只小啊小啊鳥耸黑,想要飛啊飛啊非更高啊啊啊啊啊!';
function checkString (str) {
    var result;
    var arr = [];
    var regExp = new E;
    while((result = regExp.exec(str)) != null){
          arr.push(result);
    }
    return arr;
}

?

2. 查找數(shù)字
/\d\d\d/.test("123");   // true
/\d\d\d/.test("abc");   // false
new RegExp("Bosn").test("Hi,Bosn");     // true
new RegExp("Bosn").test("Hi,bosn");     // false

?

3. 驗證input表單元素中的值桃煎,限定為1 ~ 100之間
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>輸入驗證</title>
        <style type="text/css">
            .outer_big_box {
                padding-left: 200px;
            }
        
            input::-webkit-outer-spin-button,
            input::-webkit-inner-spin-button {
                -webkit-appearance: none;
            }
            input[type="number"]{
                -moz-appearance: textfield;
                padding-left: 8px;
            }
            
            .input_wrap {
                position: relative;
            }
            .input_validation_tip_box {
                border: 1px solid red;
                display: none;
                padding: 5px 15px;
                position: absolute;
                left: -30%;
                top: 130%;
            }
            
            .input_validation_tip_box .arrow {
                width: 10px;
                height: 10px;
                border-left: 1px solid red;
                border-top: 1px solid red;
                position: absolute;
                top: -6px;
                left: 50%;
                background-color: #fff;
                transform: rotate(45deg);
                
            }
            
            .hide_tip_box {
                display: none;
            }
            .show_tip_box {
                display: block;
            }
        </style>
    </head>
    <body>
        <div class="outer_big_box">
            <div class="input_wrap">
                <input type="number" class="number_validation"/>
                <div class="input_validation_tip_box">
                    <span class="arrow"></span>
                    <span>請輸入0~100之間的值</span>
                </div>
            </div>
        </div>
    </body>
    
    
    <script type="text/javascript" src="jquery-1.11.1.js"></script>
    <script type="text/javascript">
        $(function(){
            $('.input_wrap').on('input', '.number_validation',function(){
                var $this = $(this);
                var val = $this.val();
                var reg = /^((\d{1,2})(\.\d+)?|(0+(\d{1,2})(\.)?\d+)|(0+100(\.)0+)|100|100(\.[0]+))$/;
//              var flag = (0 <= val && val <= 100) ? true : false;
//              if (!flag) {
                if (!reg.test(val)) {
                    // 顯示
                    $('.input_validation_tip_box').removeClass('hide_tip_box');
                    $('.input_validation_tip_box').addClass('show_tip_box');
                }else {
                    // 隱藏
                    $('.input_validation_tip_box').removeClass('show_tip_box');
                    $('.input_validation_tip_box').addClass('hide_tip_box');
                }
                
                if (val == '') {
                    $('.input_validation_tip_box').removeClass('show_tip_box');
                    $('.input_validation_tip_box').addClass('hide_tip_box');
                }
            });

        });
    </script>
</html>
4. 找英文單詞

全局查找某個英文單詞,必須是單獨的單詞才正確大刊,包含在其他單詞中是錯誤的

\b 為單詞分割線

// 通過構(gòu)造函數(shù)創(chuàng)建正則表達式時需要將反斜杠轉(zhuǎn)義
// var reg = new RegExp('\\bis\\b', 'g');
var reg = /\bis\b/g;        // 全局查找is單詞
var str = "He is a boy. This is a dog. Where is she?";
str.replace(reg, 'IS');     // 將字符串中的is代替為大寫的IS
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末为迈,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子奈揍,更是在濱河造成了極大的恐慌曲尸,老刑警劉巖赋续,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件男翰,死亡現(xiàn)場離奇詭異,居然都是意外死亡纽乱,警方通過查閱死者的電腦和手機蛾绎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸦列,“玉大人租冠,你說我怎么就攤上這事∈磬停” “怎么了顽爹?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長骆姐。 經(jīng)常有香客問我镜粤,道長捏题,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任肉渴,我火速辦了婚禮公荧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘同规。我一直安慰自己循狰,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布券勺。 她就那樣靜靜地躺著绪钥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪关炼。 梳的紋絲不亂的頭發(fā)上昧识,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機與錄音盗扒,去河邊找鬼跪楞。 笑死,一個胖子當(dāng)著我的面吹牛侣灶,可吹牛的內(nèi)容都是我干的甸祭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼褥影,長吁一口氣:“原來是場噩夢啊……” “哼池户!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凡怎,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤校焦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后统倒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寨典,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年房匆,在試婚紗的時候發(fā)現(xiàn)自己被綠了耸成。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡浴鸿,死狀恐怖井氢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情岳链,我是刑警寧澤花竞,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站掸哑,受9級特大地震影響约急,放射性物質(zhì)發(fā)生泄漏寇仓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一烤宙、第九天 我趴在偏房一處隱蔽的房頂上張望遍烦。 院中可真熱鬧,春花似錦躺枕、人聲如沸服猪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽罢猪。三九已至,卻和暖如春叉瘩,著一層夾襖步出監(jiān)牢的瞬間膳帕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工薇缅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留危彩,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓泳桦,卻偏偏與公主長得像汤徽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子灸撰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

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

  • ??引用類型的值(對象)是引用類型的一個實例浮毯。 ??在 ECMAscript 中完疫,引用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)...
    霜天曉閱讀 1,066評論 0 1
  • 概要 64學(xué)時 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,223評論 0 3
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,238評論 0 4
  • 前言 對于正則,著稱火星文字,見名知意主要它晦澀難懂,一直以來,看到它總是怕怕的,在平時,也只是簡單的用用,其主要...
    itclanCoder閱讀 776評論 0 2
  • 那天债蓝,陽光正好壳鹤,放學(xué)的時候卻是大雨滂沱,班里的男生朝著宿舍的方向沖進雨中惦蚊,又抱來滿懷的雨傘器虾;那天,數(shù)...
    傾聽一棵樹閱讀 202評論 0 4