正則表達式

概述

正則表達式(英語:Regular Expression)
本質:用來記錄文本規則的代碼
(為字符串定義規則,為輸入內容定義規則?。?br> 應用非常廣泛,如:表單驗證、高級搜索、生化科學

正則表達式的特點:

1、靈活性、邏輯性和功能性非常的強
2、可以迅速的用極簡單的方式達到字符串的復雜控制
3、對于剛接觸的人來說,比較晦澀難懂
比如:

匹配國內電話號碼:\d{3}-\d{8}|\d{4}-\d{7}
驗證手機號:
/^((13[0-9])|(15[^4,\D])|(18[0,5-9]))\d{8}$/

正則表達式聲明

通過構造函數定義

var 變量名= new RegExp(/表達式/);

通過直接量定義

var 變量名= /表達式/;
console.log(regexp1.test(345));
console.log(/\d/.test(567));(直接使用)

正則表達式的組成是

有一些普通字符和元字符組成,普通字符就是字母和數字,元字符具有特殊意義的字符
匹配騰訊QQ號:[1-9][0-9]{4,}
評注:騰訊QQ號從10000開始
比如 \d
預定義類: 表示數字 [0-9]

test()方法

正則對象方法,檢測測試字符串是否符合該規則,返回true和false,參數
使用語法:

Boolean=表達式.test("驗證的內容");
console.log(/\d/.test(567));

驗證 567符不符合/d的規則

正則內部類

預定義類

. [^\n\r] 除了換行和回車之外的任意字符(“”不行)
\d [0-9] 數字字符
\D [^0-9] 非數字字符

\s [ \t\n\x0B\f\r] 空白字符
\S [^ \t\n\x0B\f\r] 非空白字符

\w [a-zA-Z_0-9] 單詞字符
\W [^a-zA-Z_0-9] 非單詞字符

簡單類(正則://中什么特殊符號都不寫,和[]的加入)

1、/string/.test("string"); //必須是完整的,只多不能少
/andy/.test("andy") //true
/andy/.test(andylv") //true
/andy/.test("an") //false
一句話,只要完整包含了andy 就可以了(有他就行)
2、/[string]/.test(“string”); 只要包含里面的任何一個就可以
/[andy]/.test("andy"); // true
/[andy]/.test("an"); // true
/[andy]/.test("ady"); // true
/[andy]/.test("anll"); // true
/[andy]/.test("assd"); // true
/[andy]/.test("ss"); // false
/[3aH8]/.test("ss"); // false

負向類

中括號內,前面加個元字符^進行取反,不是括號里面的字符(一部分也不行)。
(可以不夠,但是不能多)(不夠和正好,返回false;多了或者沒有返回true)
console.log(/[^abc]/.test('a'));
console.log(/[^abc]/.test('gg'));
注意: 這個符號 ^ 一定是寫到方括號里面

范圍類

有時匹配的東西過多,而且類型又相同,全部輸入太麻煩,我們可以在中間加了個橫線
console.log(/[a-z]/.test('1111'));
console.log(/[A-Z]/.test('aa'));

組合類

用中括號匹配不同類型的單個字符。
console.log(/[a-m1-5]/.test("b"))//true

正則邊界

^ 會匹配行或者字符串的起始位置
注:^在[]中才表示非!這里表示開始
$ 會匹配行或字符串的結尾位置
^$在一起 表示必須是這個(精確匹配)
// 邊界可以精確說明要什么

console.log(/lily/.test("lilyname")); // true
console.log(/^lily$/.test("lily"));  // true
console.log(/^lily$/.test("ly"));   // false

console.log(/^andy$/.test("andy")); // true
這個的最終意思就是 說, 必須是 andy 這四個字母

量詞

  • (貪婪) 重復零次或更多 (>=0)
  • (懶惰) 重復一次或更多次 (>=1)
    ? (占有) 重復零次或一次 (0||1) 要么有 要么沒有
    {}重復多少次的意思可以有多少個
    您的銀行卡密碼只能是 6位 {6}

{n} n次 (x=n)
{n,} 重復n次或更多 (x>=n)
{n,m} 重復出現的次數比n多但比m少 (n<=x<=m)

  •    {0,}
    
  •   {1,}
    

? {0,1}

x|y 一個 | x 或者 y(沒有&,用的是,代替的)
()提高權限,有限計算

匹配座機號

var regexp  = /^(0\d{2}-\d{8})|(0\d{3}-\d{7})$/;
var demo    = /^0\d{2}-\d{8}$|^0\d{3}-\d{7}$/;

匹配中文

(     /^[\u4e00-\u9fa5]{2,4}$/     )

replace 函數

replace() 方法用于在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子串。
語法格式:(返回值是新字符串)
需要匹配的對象.replace(正則式/字符串,替換的目標字符)

正則表達式的匹配模式支持的2個標志
g:表示全局模式(global),即模式將被應用于所有字符串而非發現一個而停止

i:表示不區分大小寫(ease-insensitive)模式,在確定匹配想時忽略模式與字符串的大小寫

封裝自己的trim函數

function trim(str) {
    return str.replace(/(^\s+)|(\s+$)/g,"");  // 去掉前面和后面的空格
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 初衷:看了很多視頻、文章,最后卻通通忘記了,別人的知識依舊是別人的,自己卻什么都沒獲得。此系列文章旨在加深自己的印...
    DCbryant閱讀 4,060評論 0 20
  • 參考博文:http://www.cnblogs.com/tugenhua0707/p/5037811.html 1...
    createEngine閱讀 672評論 0 0
  • 前言 作為一個程序員,要出去裝逼,手中必備的技能就是正則表達式。程序員的正則表達式,醫生的處方和道士的鬼畫符,都是...
    Layzimo閱讀 573評論 0 6
  • RegExp 三大方法本文的RegExp采用直接量語法表示:/pattern/attributes。attribu...
    恩德_b0c2閱讀 472評論 0 0
  • 任務效果預覽源碼地址 一、創建一個正則表達式 1 字面量方式: 其中的pattern可以是任何簡單的或者復雜的正則...
    起這么長的名字根本沒有用閱讀 2,937評論 0 13