標籤: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-學習筆記(不定期更新)