首頁 >web前端 >js教程 >JavaScript的6種正規表示式(詳細教學)

JavaScript的6種正規表示式(詳細教學)

亚连
亚连原創
2018-06-05 15:36:531952瀏覽

這篇文章主要介紹了一次記住JavaScript的6個正規表示式方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

首先6這個具象的數字可以幫助我們整體記憶了。

範圍

js中有兩個類別可以讓正規發揮作用

#建立

var re = /ab+c/

方式一:正規表示字面量,這種直接是常數的表示用法可以讓js解析器提高效能

var re = new RegExp('ab+c')

方式二:建構函數,這種方式可以在runtime的時候動態決定正規是什麼,更靈活

常用特殊字元

來記憶一些常用特殊字符,這個是正則本身的範疇了,是不是總覺得記不住?其實我也記不住,每次都是去搜尋和online驗證來完成一些任務。我也困惱過,其實最後還是因為自己寫的少吧,唯手熟爾。 。 。以下的總結不寫具體內容,只列出具體特殊字符和分類,可以嘗試說出他們的意義,我覺得比看表格更有利於記憶。 。 。

  • 匹配量的:* ? {n} {n,} {n,m} .

  • 符合位置的:^ $

  • 符合並且需要支援分組的時候需要括號來包裹:(匹配的模式)

  • 符合條件的:|

匹配集合的:[]

匹配非集合的:[^]

還有大量的由\和字母組成的特殊意義的匹配模式,這些用到的時候查詢就可以了,沒有必要記住,其實我是記不住。 。 。

範例

範例是最好的老師。 。 。 。例子來自MDN

我想得到匹配後的數組

var myRe = /d(b+)d/g; 
myRe.exec('cdbbdbsdbdbz') // ["dbbd", "bb", index: 1, input: "cdbbdbsdbdbz"] 
myRe.exec('cdbbdbsdbdbz') // ["dbd", "b", index: 7, input: "cdbbdbsdbdbz"] 
myRe.exec('cdbbdbsdbdbz') // null
注意對於每個正則對象的exec每次調用都只返回一個匹配,如果需要拿到全部匹配就需要while循環獲取,循環結束標誌是返回值為null
'cdbbdbsdbdbz'.match(/d(b+)d/g) // ["dbbd", "dbd"] 
'cdbbdbsdbdbz'.match(/d(b+)d/) // ["dbbd", "bb", index: 1, input: "cdbbdbsdbdbz"]

string的match挺奇怪的,如果是global匹配則出所有匹配的數組,如果不是,則出第一個匹配的字串,以及相應的捕獲內容

var str = 'hello world!'; 
var result = /^hello/.test(str); // true 
'cdbbdbsdbdbz'.search(/d(b+)d/) // 1 
'xxx'.search(/d(b+)d/) // -1 没有匹配 
var names = 'Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand '; 
var re = /\s*;\s*/; 
var nameList = names.split(re); 
// [ "Harry Trump", "Fred Barney", "Helen Rigby", "Bill Abel", "Chris Hand " ]
var re = /apples/gi; 
var str = 'Apples are round, and apples are juicy.'; 
var newstr = str.replace(re, 'oranges'); 
// // oranges are round, and oranges are juicy.

我想得到是否匹配

var str = 'hello world!'; 
var result = /^hello/.test(str); // true

我只想得到第一次匹配的位置

'cdbbdbsdbdbz'.search(/d(b+)d/) // 1 
'xxx'.search(/d(b+)d/) // -1 没有匹配

我想按照匹配拆分字串

var names = 'Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand '; 
var re = /\s*;\s*/; 
var nameList = names.split(re); 
// [ "Harry Trump", "Fred Barney", "Helen Rigby", "Bill Abel", "Chris Hand " ]
我想按照匹配覆蓋字串
var re = /apples/gi; 
var str = 'Apples are round, and apples are juicy.'; 
var newstr = str.replace(re, 'oranges'); 
// // oranges are round, and oranges are juicy.

這個replace方法的用法著實比較多,只放了最基礎用法,當有需求的時候再查就好了,整體有概念了再實踐比強行記憶要好吧~

上面是我整理給大家的,希望今後會對大家有幫助。

相關文章:

在vue中如何實現類似淘寶星級評分

#########在vue中如何解決無法動態修改jqgrid元件url位址的問題############在React中使用Native如何實作自訂下拉刷新上拉載入的清單#######

以上是JavaScript的6種正規表示式(詳細教學)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn