正則表達式的用法舉例

1, \d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分別是什么?

\d:預定義類的數字字符.
\w"單詞字符,字母,數字下劃線.
\s:空白符
[a-zA-Z0-9]: 大小寫字母或者是數字的單個字符
\b:單詞邊界
.:任意字符 除去回車換行
*:出現任意多次
+:至少出現一次
?:最多出現一次
x{3}: 代表著x出現3次
^: 不在[]代表以xxx開頭,在[]中代表取反
$: 代表以xxx結尾

2, 寫一個函數trim(str),去除字符串兩邊的空白字符

   function trim(str) {
        var reg = /\s*|\s*$/g; //^\s代表以空白開頭,后面的*代表任意多次,同理結尾的\s*$也是以*個即任意個空白符結尾的字符串
        return str.replace(reg,'');
    }
    console.log(trim('     hello     '));

3, 寫一個函數isEmail(str),判斷用戶輸入的是不是郵箱

        function isEmail (str) {
//        var reg = /^\w+@.+/;
        var reg = /^\w+@\w+\.\w+$/;
        return reg.test(str);
    }
    var testEmail = isEmail('1@qq.co');
    console.log(testEmail); //true

4,寫一個函數isPhoneNum(str),判斷用戶輸入的是不是手機號

    function isPhoneNum (str) {
        var reg = /^1\d{10}$/;
        return reg.test(str);
    }
    var testPhone = isPhoneNum('13812345678');
    console.log(testPhone);//true

5,寫一個函數isValidUsername(str),判斷用戶輸入的是不是合法的用戶名(長度6-20個字符,只能包括字母、數字、下劃線)

    function isValidUsername (str) {
        var reg = /^\w{6,20}$/;
        return reg.test(str);
    }
    var testUsername = isValidUsername('hellodeejay123');
    console.log(testUsername);//true

6,寫一個函數isValidPassword(str), 判斷用戶輸入的是不是合法密碼(長度6-20個字符,只包括大寫字母、小寫字母、數字、下劃線,且至少至少包括兩種)

    function isValidPassword (str) {
        var reg = /^\w{6,20}$/;
        var regNum = /^\d{6,20}$/;
        var regUpper = /^[A-Z]{6,20}$/;
        var regLower = /^[a-z]{6,20}$/;
        var regUnderline = /^_{6,20}$/;

        if (!reg.test(str)) {
            return false;
        }
        else if (regNum.test(str)) {
            return false;
        }
        else if (regUpper.test(str)) {
            return false;
        }
        else if (regLower.test(str)) {
            return false;
        }
        else if (regUnderline.test(str)) {
            return false;
        }
        else {
            return true;
        }
    }
    var testPassword = isValidPassword('13asdASD__');
    console.log(testPassword);

7,寫一個正則表達式,得到如下字符串里所有的顏色

var re = /*正則...*/
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
console.log( subj.match(re) )  // ['#121212', '#AA00ef']
    function getColor (str) {
        var reg = /#[\dA-Fa-f]{6}|#[\dA-Fa-f]{3}(?=;)/g;
        return str.match(reg);
    }
    var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
    var color = getColor(subj);
    console.log(color);

8, 下面代碼輸出什么? 為什么? 改寫代碼,讓其輸出[""deejay"", ""world""].

var str = 'hello  "deejay" , hello "world"';
var pat =  /".*"/g;
str.match(pat);

輸出結果為:[""deejay" , hello "world""]
因為默認是貪婪模式,從第一個雙引號開始直接到最后一個雙引號進行匹配。
改寫代碼只需要改為非貪婪模式即可:
var pat = /",*?"/;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容