var expression = / pattern / flags;
javascript
var 表達式 = / 模式 / 標誌;
html
正則表達式的匹配模式支持下列3個標誌。java
修飾符 | 描述 |
---|---|
g(global) | 全局匹配,應用全部字符串,而非在發現第一個匹配後中止 |
i(ignoreCase) | 不區分大小寫,匹配時忽略模式與字符串的大小寫 |
m(multiline) | 多行匹配,到達一行文本末尾,繼續查找下一行 |
var expression = /[bc]at/i;//字面量定義
var expression = new RegExp("[bc]at","i");//構造函數定義複製代碼
RegExp構造函數接收兩個參數:RegExp("要匹配的字符串模式","可選的標誌字符串") 注意: 傳遞給RegExp構造函數的兩個參數必須都是字符串git
因爲 RegExp 構造函數的模式參數是字符串,因此在某些狀況下要對字符進行雙重轉義。github
| 字面量模式 | 構造函數模式 | | :-----------:| :------------:| 正則表達式
接收:一個字符串參數。express
返回值:返回一個布爾值。數組
當模式與改參數匹配的狀況下返回true,不然爲false。函數
var example = "000-00-0000";
var pattern = /\d{3}-\d{2}-\d{4}/;
if (pattern.test(example)){
alert("The pattern was matched.");
}複製代碼
exec() 接受一個參數,即要應用模式的字符串,而後返回包含第一個匹配項信息的數組;在沒有匹配項的狀況下返回 null 。返回的數組雖然是 Array 的實例,但包含兩個額外的屬性: index 和 input 。ui
index 表示匹配項在字符串中的位置。
input 表示應用正則表達式的字符串。
match()方法能夠以相似數組的形式返回第一個與表達式匹配的字符
例子:
var reg = /ab/; var str = "abababababab"; console.log(str.match(reg));複製代碼
var reg = /ab/g;
var str = "abababababab";
console.log(str.match(reg));複製代碼
[........],查找方括號中的任意字符
好比: [abc]、[0-9]、[a-z]、[A-Z]、[A-z]、[adgk]
[ ^......],查找方括號中之外的任意字符,^表示非,注意這個^是要在[]裏面的才表示非
好比: abc、adpk
(......|......|......) ,查找圓括號裏面中的指定的其中一個,|表示或
好比: (abc|bcd|def)
字符 | 等價類 | 含義 |
---|---|---|
. | [^\r\n] | 除了回車符和換行符以外的全部字符 |
\d | [0-9] | 數字字符 |
\D | [^0-9] | 非數字字符 |
\s | [\t\n\x0B\f\r] | 空白字符 |
\S | [^\t\n\x0B\f\r] | 非空白字符 |
\w | [a-zA-Z_0-9] | 單詞字符(字母、數字下劃線) |
\W | [^a-zA-Z_0-9] | 非單詞字符 |
字符 | 含義 |
---|---|
^ | 匹配字符串的開頭 |
$ | 匹配字符串的結尾 |
\b | 匹配一個單詞的邊界 |
\B | 與\b相反,匹配一個非單詞邊界 |
用例:
字符 | 含義 |
---|---|
n+ | 匹配任何包含至少一個 n 的字符串 |
n* | 匹配任何包含零個或多個 n 的字符串 |
n? | 匹配任何包含零個或一個 n 的字符串 |
n{x} | 匹配包含 x 個 n 的序列的字符串 |
n{x,y} | 匹配包含 x 至 y 個 n 的序列的字符串 |
n{x,} | 匹配包含至少 x 個 n 的序列的字符串 |
?=n | 匹配任何其後緊接指定字符串 n 的字符串 |
?!n | 匹配任何其後沒有緊接指定字符串 n 的字符串 |
1. 將the-first-name轉換成theFirstName?
var reg = /-(\w)/g;
var str = "the-first-name";
var newStr = str.replace(reg,function($,$1){
return $1.toUpperCase();
});
console.log(newStr); 複製代碼
2. 對數組去重?
var str = "aaaaaaaaaaabbbbbbbbbcccccccc";
var reg = /(\w)\1*/g;
console.log(str.replace(reg,"$1"));複製代碼
3. 請將aaaaaabbbbbb的字符串調換成bbbbbbaaaaaa的形式?
var reg = /(\w{6})(\w{6})/g;
var str = "aaaaaabbbbbb";
console.log(str.replace(reg,"$2$1"));複製代碼
4. 用.將str字符串從後向前3位3位截斷?
var reg = /(?=(\B)(\d{3})+$)/g;
var str = "1000000000";
console.log(str.replace(reg,"."));複製代碼
5. 如何獲取一個字符串中的數字字符,並以數組形式輸出,如dgfhfgh234bhku259fakhdy678fh輸出的是[234,259,678];
var str = "dgfhfgh234bhku259fakhdy678fh";
var newArr = str.match(/\d+/g).map(function(x){
return +x;
})
console.log(newArr);複製代碼
更多文章請轉移:github.com/wangyicong