正則 RegExp

JS中的正則

正則是處理字符串的 一種規則JS中的正則 具體體現出來是一種數據類型,正則數據屬於引用數據類型bash

JS編寫正則的兩種方式:

  • 字面量的方式建立一個正則實例:var reg = /q/
  • new的方式建立 : var reg = new RegExp('q')

涉及到變量時候會偶爾用new的方式建立正則,通常都是字面量的方式spa

正則通常有兩種用途:

  • 用於匹配test:編寫一個正則,看對應的字符串是否符合該正則
  • 用於捕獲exec:編寫一個正則,能夠把對應字符串中的符合規則的部分獲取到

一個正則的組成

var reg = /-re/g 雙斜槓中的內容 咱們稱爲元字符,斜槓外邊的內容咱們稱爲修飾符code

經常使用的元字符能夠分爲 有特殊含義的元字符量次元字符 普通元字符字符串

有特殊含義的元字符:

\        轉義字符   把正則中有特殊含義字符轉成字符自己 再也不有任何特殊含義
 \d       表明0~9之間數字
 \D       表明除了0~9的任一字符
 \w       表明了 數字 字母 下劃線
 \W       表明除了 數字 字母 下劃線以外類的字符
 ^        表明以什麼字符開頭
 $        表明以什麼字符結尾
 .        表明除了換行之外的全部字符
 \n       表明換行
 x|y      表明x或者y
 \t       表明製表
 [ab]     表明a或者b
 [^ab]    表明非ab
 [a-z]    表明a-z之間的任意字符
 [^a-z]   表明除了小寫字母
 ()       分組和提高優先級
 (?:)     非捕獲匹配
 (?=)
 (?!)
複製代碼

量詞元字符:(通常都是用在其餘元字符的後邊)

?       表明前邊的字符出現0 或者1次
 +       表明前邊的字符出現一次或者屢次
 *       表明前邊的字符出現0 或者 屢次
 {n}     表明前邊字符出現n次
 {n,m}   表明前邊的字符出現n到m次
 {n,}    表明前邊的字符出現至少n次  n到屢次
複製代碼

修飾符:

i     忽略大小寫  ignoreCase
 m     多行匹配    mutiline
 g     全局匹配    global   
複製代碼

舉例說明:

var str = '2019-9-23';
  str = str.replace(/-/g, '/');
  var ary = ['qqq', 'www', 'yyy'];
  var arr = ary.map(item => new RegExp(item)) ;
  console.log(arr);
複製代碼
var reg = /d/;
var reg = new RegExp('\d')
console.log(reg.test('qwert123456')) //false
console.log(reg.test('abcddd123456')) // true
var reg = /\d/;
var reg = new RegExp('\\d')
console.log(reg.test('qwert123456')) //true
console.log(reg.test('abcddd123456')) // true

var reg = /\\d/;
console.log(reg)
console.log(reg.test('qwert123456')) //false
console.log(reg.test('abc\\ddd123456')) // true

var reg = /\W/
console.log(reg.test('wreqwerafad1231___'))

var reg = /\d?/
console.log(reg.test('qerq23425fadfwrew'))//true


var reg = /\d{2}/
console.log(reg.test('qerq2fadfwrew')) // false
console.log(reg.test('qerq23fadfwrew'))// true
console.log(reg.test('qerq23425fadfwrew'))//true

var reg = /\d{2,}/
console.log(reg.test('qerq2fadfwrew')) // false
console.log(reg.test('qerq23fadfwrew'))// true
console.log(reg.test('qerq23425fadfwrew'))//true



var reg = /^d/
console.log(reg.test('qerq23425fadfwrew'))//false
console.log(reg.test('dddderq23425fadfwrew'))//true

var reg = /^\d/
console.log(reg.test('qerq23425fadfwrew'))//false
console.log(reg.test('dddderq23425fadfwrew'))//false

var reg = /^\w/
console.log(reg.test('qerq23425fadfwrew'))//true
console.log(reg.test('dddderq23425fadfwrew'))//true

var reg = /d$/;// 以 字符d結尾
console.log(reg.test('qerq23425fadfwrew'))//false
console.log(reg.test('dddderq23425fadfwrew'))//false
console.log(reg.test('ddd'))//true

var reg = /\d$/;  //以數字結尾 
console.log(reg.test('qerq23425fadfwrew'))//false
console.log(reg.test('dddderq23425fadfwrew'))//false
console.log(reg.test('ddd'))//false

var reg = /d+$/;// 以 字符d結尾
console.log(reg.test('qerq23425fadfwrew'))//false
console.log(reg.test('dddderq23425fadfwrewd'))// true
console.log(reg.test('ddd'))//true

var reg = /d*$/;// 以 字符d結尾
console.log(reg.test('qerq23425fadfwrew'))//true
console.log(reg.test('dddderq23425fadfwrewd'))// true
console.log(reg.test('ddd'))//true


var reg = /d{2}$/;// 以 字符d結尾
console.log(reg.test('qerq23425fadfwrew'))//false
console.log(reg.test('dddderq23425fadfwrewd'))// false
console.log(reg.test('ddd'))//true


var reg = /wd{2}$/;// 以倆d結尾 前邊是個 w;
console.log(reg.test('qerq23425fadfwrew'))//false
console.log(reg.test('dddderq23425fadfwrewd'))// false
console.log(reg.test('ddd'))//false
console.log(reg.test('wddd'))//false
console.log(reg.test('dwdd'))//true


var reg = /^d$/; // 以d開頭 以d結尾 中間是個d ; 就是個d
console.log(reg.test('dwerwed')) // false
console.log(reg.test('dddd')) // false
console.log(reg.test('d')) // true

var reg = /^dd$/; // 之前邊的d開頭 之後邊d結尾 中間啥也沒有 ; 就是個dd
console.log(reg.test('dwerwed')) // false
console.log(reg.test('dddd')) // false
console.log(reg.test('d')) // false


var reg = /^d\wd$/; // 之前邊的d開頭 之後邊d結尾 中間是一個數字字母下劃線 ; 
console.log(reg.test('dwerwed')) // false
console.log(reg.test('dddd')) // false
console.log(reg.test('d')) // false
console.log(reg.test('d_d')) // true
console.log(reg.test('ded')) // true
console.log(reg.test('d2d')) // true
console.log(reg.test('d.d')) // false

var reg = /^d\w+d$/; // \
console.log(reg.test('dwerwed')) // true
console.log(reg.test('dddd')) // true

var reg = /^dd{2,}d$/; // \
var reg = /^d{4,}$/
console.log(reg.test('dwerwed')) // false
console.log(reg.test('dwed')) // false
console.log(reg.test('dddd')) // true
console.log(reg.test('ddddddd')) // true

var reg = /(wd){2}$/ ;// 表明 以 兩個 wd 結尾
console.log(reg.test('fasdfawdwd')) // true
console.log(reg.test('fasdfawdwdwd'))//true
console.log(reg.test('fasdfawd')) // false

var reg = /^\d.123$/;// 以一個數字開頭 以3結尾前邊是12 12前邊是除了換行之外的任意字符
var reg2 = /^\d\.123$/
console.log(reg.test('123.123'))// false
console.log(reg.test('q123.123'))// false
console.log(reg.test('123q123'))// false
console.log(reg.test('123q.123'))// false
console.log(reg.test('q.123'))// false
console.log(reg.test('0q123')) // true


var reg = /^\d+.123$/;// 'n個數字 任意 123'
console.log(reg.test('123.123'))//true
console.log(reg.test('q123.123'))//false
console.log(reg.test('123q123'))//true
console.log(reg.test('123q.123'))//false


var reg = /[a-c]/; //  只要有一個 a或者b或者c ; 結果就是true
console.log(reg.test('aqweaqe'))
var reg = /^[a-c]/; //  只要以 a或者b或者c  開頭的字符串; 結果就是true
var reg = /^[a-c]{2}/; //  只要以 a到c之間的任意兩個字符開頭的字符串 結果都是true;

var reg = /[a-z0-9]/; // 小寫字母和數字
var reg = /[0-9a-z]/;// 小寫字母和數字
var reg = /[0-9a-zA-Z_]/; // \w

var reg = /[.]/ // 中括號中的點 表明 點 自己;













複製代碼
相關文章
相關標籤/搜索