//價格千分位格式化 function formatNum(num){ return (num.toFixed(2) + '').replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,'); }
password =E10ADC3949BA59ABBE56E057F20F883E
'12345678901'.replace(/(\d{3})\d{4}(\d{4})/,'$1****$2')
$1、$2、...、$99 | 與 regexp 中的第 1 到第 99 個子表達式相匹配的文本。 |
$& | 與 regexp 相匹配的子串。 |
$` | 位於匹配子串左側的文本。 |
$' | 位於匹配子串右側的文本。 |
$$ | 直接量符號。 |
元字符
|
描述
|
\
|
將下一個字符標記符、或一個向后引用、或一個八進制轉義符。例如,“\\n”匹配\n。“\n”匹配換行符。序列“\\”匹配“\”而“\(”則匹配“(”。即相當於多種編程語言中都有的“轉義字符”的概念。
|
^
|
匹配輸入字行首。如果設置了RegExp對象的Multiline屬性,^也匹配“\n”或“\r”之后的位置。
|
$
|
匹配輸入行尾。如果設置了RegExp對象的Multiline屬性,$也匹配“\n”或“\r”之前的位置。
|
*
|
匹配前面的子表達式任意次。例如,zo*能匹配“z”,也能匹配“zo”以及“zoo”。*等價於{0,}。
|
+
|
匹配前面的子表達式一次或多次(大於等於1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等價於{1,}。
|
?
|
匹配前面的子表達式零次或一次。例如,“do(es)?”可以匹配“do”或“does”。?等價於{0,1}。
|
字符類別(Character Classes) | |
---|---|
字符 | 含義 |
. |
(點號,小數點) 匹配任意單個字符,但是行結束符除外: 在字符集中,點( . )失去其特殊含義,並匹配一個字面點( . )。 需要注意的是, 例如, |
\d |
匹配任意阿拉伯數字。等價於 例如, |
\D |
匹配任意一個不是阿拉伯數字的字符。等價於 例如, |
\w |
匹配任意來自基本拉丁字母表中的字母數字字符,還包括下划線。等價於 例如, |
\W |
匹配任意不是基本拉丁字母表中單詞(字母數字下划線)字符的字符。等價於 例如, |
\s |
匹配一個空白符,包括空格、制表符、換頁符、換行符和其他 Unicode 空格。 等價於 例如 |
\S |
匹配一個非空白符。等價於 例如, |
\t |
匹配一個水平制表符(tab) |
\r |
匹配一個回車符(carriage return) |
\n |
匹配一個換行符(linefeed) |
\v |
匹配一個垂直制表符(vertical tab) |
\f |
匹配一個換頁符(form-feed) |
[\b] |
匹配一個退格符(backspace)(不要與 \b 混淆) |
\0 |
匹配一個 NUL 字符。不要在此后面跟小數點。 |
\cX |
例如, |
\xhh |
匹配編碼為 hh (兩個十六進制數字)的字符。 |
\uhhhh |
匹配 Unicode 值為 hhhh (四個十六進制數字)的字符。 |
\ |
對於那些通常被認為字面意義的字符來說,表示下一個字符具有特殊用處,並且不會被按照字面意義解釋。 例如 或 對於那些通常特殊對待的字符,表示下一個字符不具有特殊用途,會被按照字面意義解釋。 例如,* 是一個特殊字符,表示匹配某個字符 0 或多次,如 |
字符集合(Character Sets) | |
字符 | 含義 |
[xyz] |
一個字符集合,也叫字符組。匹配集合中的任意一個字符。你可以使用連字符'-'指定一個范圍。 例如,[abcd] 等價於 [a-d],匹配"brisket"中的'b'和"chop"中的'c'。 |
[^xyz] |
一個反義或補充字符集,也叫反義字符組。也就是說,它匹配任意不在括號內的字符。你也可以通過使用連字符 '-' 指定一個范圍內的字符。 例如, |
邊界(Boundaries) | |
字符 | 含義 |
^ |
匹配輸入開始。如果多行(multiline)標志被設為 true,該字符也會匹配一個斷行(line break)符后的開始處。 例如, |
$ |
匹配輸入結尾。如果多行(multiline)標志被設為 true,該字符也會匹配一個斷行(line break)符的前的結尾處。 例如, |
\b |
匹配一個零寬單詞邊界(zero-width word boundary),如一個字母與一個空格之間。 (不要和 例如, |
\B |
匹配一個零寬非單詞邊界(zero-width non-word boundary),如兩個字母之間或兩個空格之間。 例如, |
分組(Grouping)與反向引用(back references) | |
字符 | 含義 |
(x) |
匹配 例如, 捕獲組(Capturing groups)有性能懲罰。如果不需再次訪問被匹配的子字符串,最好使用非捕獲括號(non-capturing parentheses),見下面。 |
\n |
例如, |
(?:x) |
匹配 x 不會捕獲匹配項。這被稱為非捕獲括號(non-capturing parentheses)。匹配項不能夠從結果數組的元素 [1], ..., [n] 或已被定義的 RegExp 對象的屬性 $1, ..., $9 再次訪問到。 |
數量詞(Quantifiers) | |
字符 | 含義 |
x* |
匹配前面的模式 x 0 或多次。 例如, |
x+ |
匹配前面的模式 x 1 或多次。等價於 例如, |
x*? x+? |
像上面的 * 和 + 一樣匹配前面的模式 x,然而匹配是最小可能匹配。 例如, |
x? |
匹配前面的模式 x 0 或 1 次。 例如, 如果在數量詞 在使用於向前斷言(lookahead assertions)時,見該表格中 |
x(?=y) |
只有當 x 后面緊跟着 y 時,才匹配 x 。 例如,/Jack(?=Sprat)/ 只有在 'Jack' 后面緊跟着 'Sprat' 時,才會匹配它。/Jack(?=Sprat|Frost)/ 只有在 'Jack' 后面緊跟着 'Sprat' 或 'Frost' 時,才會匹配它。然而,'Sprat' 或 'Frost' 都不是匹配結果的一部分。 |
x(?!y) |
只有當
|
x|y |
匹配 例如, |
x{n} |
例如, |
x{n,} |
例如, |
x{n,m} |
例如, |
斷言(Assertions) | |
字符 | 含義 |
x(?=y) |
僅匹配被y跟隨的x。 舉個例子,
|
x(?!y) |
僅匹配不被y跟隨的x。 舉個例子, |