JavaScriptRegex-學習筆記(不定期更新)

來源:互聯網
上載者:User

標籤:split   regex   學習   top   abc   cab   mat   範圍   case   

JavaScript權威指南學習筆記,禁止轉載!

8、Regex

在常見的字串檢索或替換中,我們需要提供一種模式表示檢索或替換的規則。

Regex使用單個字串來描述、匹配一系列符合某個句法規則的字串。

使用:

/\d\d\d/.test(“123”);  //true

new RegExp(“Bosn”).test(“Hi,Bosn”);  //true

正則基礎:

.

任何字元(除分行符號以外)

/…/.test(‘[email protected]’)

\d

數字0-9

/\d\d\d/.test(‘123’)

\D

非\d,即不是數字0-9的字元

/\D\D\D/.test(‘ab!’)

\w

字母a-zA-Z,數字0-9,底線

/\w\w\w\w/.test(‘aB9_’)

\W

非\w

/\W\W\W/.test(‘@!#’)

\s

空格符、Tab、換頁符、分行符號

/\sabc/.test(‘ abc’)

\S

非\s

 

\t\r\n\v\f

Tab、斷行符號、換行、垂直定位字元、換頁符

 

[]

字元範圍

[a-z] [0-9] [A-Za-z0-9]

[^ ]

字元範圍以外

[^a-z]

^

行首

^Hi

$

行尾

test$

\b

零寬單詞邊界

\bno匹配‘a_no’

\B

非\b

 

轉義符\

匹配 . ^ $ 這些字元前加上特殊轉義符 \

/\^abc/.test(‘^abc’)

()

分組

 

\n

表示使用分組符()匹配到的字串

/(abc)\1/.test(‘abcabc’)

(?:)

僅分組

/(?:abc)(def)\1/.test(‘abcdefdef’)

x*,x+

重複0或多次,重複1或多次(貪婪演算法)

abc*匹配ab,abc,abccc

abc+匹配abc,abccc

x*?,x+?

x+?:匹配x自身

非貪婪演算法

abc*?在字串abcccc中匹配ab

abc+?在字串abcccc中匹配abc

x?

重複0或1次

 

x|y

x或y

x|y匹配x也匹配y

x{n}

x{n,}

x{n,m}

重複n次

重複>=n次

n=<重複次數<=m

x{5}匹配xxxxo

x{1,3}匹配x,xx,xxx

三個flag

global(正常匹配到一個就結束了,若需匹配到所有的情況則用global標籤),

ignoreCase(不區分大小寫)

multiline(可以跨行檢索)

如何設定標籤:

/abc/gim.test(‘ABC’);  //true

RegExp(“abc”,“mgi”) .test(‘ABC’);  //true

RegExp對象屬性:global、ingoreCase、multiline、source

/abc/g.global  //true

/abc/g.ignoreCase  //false

/abc/g.multiline  //false

/abc/g.source  //“abc”正則的內容

RegExp對象方法:compile、exec、test、toString

/abc/.exec(“abcdef”); //“abc”返回用正則去匹配字串匹配的結果

/abc/.test(“abcdef”);  //true

/abc/.toSTring();  //  “/abc/”返回正則的內容

var reg=/abc/; reg.compile(“def”);reg.test(“def”);  //true改寫正則的內容

string類型與正則相關的方法

String.prototype.search 返回正則在字串中的索引

“abcabcdef” .search(/abc\1/);  //0(索引為0)

String.prototype.replace 替換字元

“aabbbbcc”.replace(/b+?/,“1”);  // aa1bbbcc

String.prototype.match返回一個數組,數組元素是正則的內容

“aabbbbcc”.match(/b+/);   //[“bbbb”]

“aabbbbccbbaa”.match(/b+/g);   //[“bbbb”,“bb”]

String.prototype.split分割字串,返回一個數組

“aabbbbccbbaa”.split(/b+/);  //[“aa”,“cc”,“aa”]

應用

//校正密碼:只能輸入6-20個字母、數字、底線

/^(\w){6,20}$/

學會正則會大大提高編程效率!!!

JavaScriptRegex-學習筆記(不定期更新)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.