【標(biāo)準(zhǔn)庫】RegExp

申明方式, 第二種可以使用變量

var regex = /xyz/;
var regex = new RegExp('xyz', i);

var reg = 'xyz';
var regex = new RegExp(reg);
  • 在匹配的時候 會記住上次的lastIndex所以匹配的時候不應(yīng)該更改所要匹配的字符串
var r = /bb/g;
r.test('bb') // true
r.test('-bb-') // false
new RegExp('').test('abc')
  • exec() 用來返回匹配結(jié)果,匹配成功,返回一個數(shù)組,失敗返回null
var s = '_x_x';
var r1 = /x/;
var r2 = /y/;

r1.exec(s) // ["x"]
r2.exec(s) // null
  • String.prototype.match() lastIndex 屬性無效
  • String.prototype.search() 返回第一個滿足的位置,沒有返回-1
  • String.prototype.replace()
替換字符
$&  指代匹配的字符串
$`   匹配結(jié)果之前all
$'   匹配結(jié)果之后all
'hello world'.replace(/(\w+)\s(\w+)/, '$2 $1')
// "world hello"

'abc'.replace('b', '[$`-$&-$\']')
// "a[a-b-c]c"

第二個參數(shù)是 函數(shù)

var a = 'The quick brown fox jumped over the lazy dog.';
var pattern = /quick|brown|lazy/ig;

a.replace(pattern, function replacer(match) {
  return match.toUpperCase();
});

捕捉模式 替換模板

var prices = {
  'p1': '$1.99',
  'p2': '$9.99',
  'p3': '$5.00'
};

var template = '<span id="p1"></span>'
  + '<span id="p2"></span>'
  + '<span id="p3"></span>';

template.replace(
  /(<span id=")(.*?)(">)(<\/span>)/g,
  function(match, $1, $2, $3, $4){
    return $1 + $2 + $3 + prices[$2] + $4;
  }
);
// "<span id="p1">$1.99</span><span id="p2">$9.99</span><span id="p3">$5.00</span>"

字面量字符和元字符

  • 點字符(.)
    點字符(.)匹配除回車(\r)、換行(\n) 、行分隔符(\u2028)和段分隔符(\u2029)以外的所有字符
  • 位置符
    ^ $ 開始 結(jié)束
  • 選擇符|
/11|22/.test('911') // true
  • [] && [^]
    如果方括號里面沒有其他字符,只有[^] 就表示匹配一起字符,而點號(.)不包括換行回車這些
/[abc]/.test('hello world') // false
/[abc]/.test('apple') // true
/[^abc]/.test('bbc') // false

var s = 'Please yes\nmake my day!';

s.match(/yes.*day/) // null
s.match(/yes[^]*day/) // [ 'yes\nmake my day']
  • [-] 可選連字符
  • 預(yù)定義模式
\d 匹配0-9之間的任一數(shù)字,相當(dāng)于[0-9]。
\D 匹配所有0-9以外的字符,相當(dāng)于[^0-9]。
\w 匹配任意的字母、數(shù)字和下劃線,相當(dāng)于[A-Za-z0-9_]。
\W 除所有字母、數(shù)字和下劃線以外的字符,相當(dāng)于[^A-Za-z0-9_]。
\s 匹配空格(包括換行符、制表符、空格符等),相等于[ \t\r\n\v\f]。
\S 匹配非空格的字符,相當(dāng)于[^ \t\r\n\v\f]。
\b 匹配詞的邊界。
\B 匹配非詞邊界,即在詞的內(nèi)部。
  • {n,m} 表示匹配次數(shù),n到m次,{n,m}表示重復(fù)不少于n次,不多于m次。
? 表示出現(xiàn)0 到1次 等同`{0,1}`
* 表示0到多次,等同于{0,}
+ 表示1到多次,等同于{1,}
  • 貪婪模式 +? *? ??
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、概述 正則表達(dá)式(regular expression)是一種表達(dá)字符串結(jié)構(gòu)的方法,有點像字符串的模版,常常用...
    周花花啊閱讀 679評論 0 1
  • 概述 正則表達(dá)式(regular expression)是一種表達(dá)文本模式(即字符串結(jié)構(gòu))的方法,有點像字符串的模...
    許先生__閱讀 320評論 0 1
  • 前言 最先接觸編程的知識是在大學(xué)里面,大學(xué)里面學(xué)了一些基礎(chǔ)的知識,c語言,java語言,單片機的匯編語言等;大學(xué)畢...
    oceanfive閱讀 3,395評論 0 7
  • '^'必須才開頭開始匹配'$'必須在末尾結(jié)束匹配'|' 表示‘或’/ab|cd/匹配ab或者cd'.'表示點字符(...
    zjh111閱讀 471評論 0 0
  • 參考基礎(chǔ)教程的整理,方便記憶 一、Object對象 (O大寫) 所有其他對象都繼承自這個對象。Object本身也是...
    Viaphlyn閱讀 2,456評論 0 0

友情鏈接更多精彩內(nèi)容