若是你想記住js正則表達式,來收藏一下說不定會多看幾遍呢,感謝您的支持呀javascript
字符 | 匹配 |
---|---|
字母或數字 | 自身 |
\0 | 表示空字符,null,等價\u0000 |
\t | 表示製表符 \u0009 |
\n | 表示換行符 \u000A |
\v | 表示垂直製表符 |
\f | 表示換頁符 |
\r | 表示回車符 |
\xnn | 有十六進制數表示escape字符數 |
\uxxxx | 十六進制的Unicode |
\xxx | 八進制字符 |
以上正則表達式爲基本的字面量語法,漢字的範圍:/^[\u4e00 - \u9fa5]+$/java
字符 | 匹配 |
---|---|
g | 全局匹配 |
i | 忽略大小寫 |
m | 多行匹配 |
閱讀以上內容咱們正式來看看正則表達式還有哪些語法正則表達式
範圍類是表示能夠匹配必定範圍內的字符好比**[a-z]、[0-9]**app
"2016-09-01".replace(/[0-9]/g,"A") //AAAA-AA-AA
複製代碼
正則表達式爲了方便也提供了一些預約義類:this
字符 | 等價類 | 匹配 |
---|---|---|
. | [^\r\n] | 除了回車換行 |
\d | [0-9] | 數字字符 |
\D | [^0-9] | 非數字字符 |
\s | [\t\n\x0B\f\r] | 空白符 |
\S | [^\t\n\x0B\f\r] | 非空白符 |
\w | [a-zA-Z0-9_] | 字母數字下劃線 |
\W | [^a-zA-Z0-9_] | 非字母數字下劃線 |
預約義類提供了比較經常使用的類spa
字符 | 匹配 |
---|---|
^ | 以XXX開頭 |
$ | 以XXX結尾 |
\b | 單詞邊界 |
\B | 非單詞邊界 |
對於單詞邊界的解釋: 1.當咱們要將字符串'this is a apple'中is替換爲字母A應該怎麼作呢?code
//1.首先咱們來嘗試一下
'this is a apple'.replace(/is/g,'A'); //輸出"thA A a apple"
//2.只有單詞旁邊有空格纔會被替換??因而
'this is a apple'.replace(/\sis\s/g,'A'); //輸出"thisAa apple"
//3.來試試單詞邊界
'this is a apple'.replace(/\bis\b/g,'A'); //輸出"this A a apple"
//4若是咱們想改變this中的is呢?
'this is a apple'.replace(/\Bis\b/g,'A');//輸出"thA is a apple"
複製代碼
字符 | 匹配 |
---|---|
? | 最多一次 |
+ | 至少一次 |
* | 任意次 |
{n} | n次 |
{n,m} | n到m次 |
{n,} | 至少n次 |
正則表達式默認是按照儘量多的匹配:regexp
'12345678'.replace(/\d{3,6}/g,'A');//A78
//若改成非貪婪模式只須要將量詞後加上?
'12345678'.replace(/\d{3,6}?/g,'A')//AA78
複製代碼
當你要匹配一個單詞匹配三次怎麼用呢?ip
'hellohellohellohello'.replace(/(hello){2}/g,'A')//Ahello
複製代碼
'hello'.replace(/hello|world/g,'A')
hello或者world而不是o或w
'helloorldhellworld'.replace(/hell(o|w)orld/g,'A')//AA
複製代碼
假定一個需求:YYYY-MM-DD替換爲DD-MM-YYYY字符串
'2010-09-08'.replace(/(\d{4})-(\d{2})-(\d{2})/,'$3/$2/$1');
$n表示的是第幾個分組
複製代碼
在分組裏面加上?:
'2010-09-08'.replace(/(?:\d{4})-(\d{2})-(\d{2})/,'$3/$2/$1');
//"$3/08/09"
$3不存才了
複製代碼
先來看看這張表
名稱 | 正則 | 匹配 |
---|---|---|
正向前瞻 | exp(?=assert) | |
負向前瞻 | exp(?=assert) | |
正向後顧 | exp(?=assert) | js不支持 |
負向向後顧 | exp(?=assert) | js不支持 |
因爲js不支持因此不予介紹了 前瞻:js從文本頭向尾部解析,文本尾部叫作"前" 來看以前的一個列子 'this is a apple'將is替換爲A
'this is a apple'.replace(/is(?=\sa)/g,'A');
//輸出"this A a apple"
複製代碼