1.定義
正規表示式目的在於處理字串的查詢、驗證、修改、替換
var reg1 = new regexp('s','g'); // 建構函式的寫法
var reg2 = /s\d?/g; // 字面量寫法
2.正規表示式方法
test():判斷字串是否存在符合正規表示式的子字串,存在返回true,反之返回false
exec():返回乙個陣列,包括符合正規表示式條件的子字串的元素和位置
console.log(reg1.test('loves')); // true
console.log(reg2.exec('as1s2bsa')); // ["s1", index: 1, input: "as1s2bsa", groups: undefined]
3.回顧字串方法
search: 查詢子串,返回被查詢到的下標
match: 返回被查詢到所有符合條件元素的陣列,如果不使用/g全域性查詢跟exec()一樣
replace: 替換,返回的是新字串
split: 切割
var str = 'sabcsabcs';
console.log(str.search(/abc/g)); // 1
console.log(str.match(/abc/g)); // ["abc", "abc"]
console.log(str.replace(/c/g,'f')); // sabfsabfs
console.log(str.split(/b/g)); // ["sa", "csa", "cs"]
4.正規表示式規則
組成正規表示式最基礎的字元稱為原字元
(1)修飾符:
i:執行對大小寫不敏感匹配
g:執行全域性匹配
m:執行多行匹配
(2). 萬用字元,只能代表乙個字元,如果需要使用.字元而不是萬用字元,就需要.進行轉義
(3)字元類
**[ad]:**在括號中的字元僅可以選擇乙個字元,可以理解為或的意思,要麼a要麼是d,在中.僅代表字元,不是萬用字元
字元類範圍:[a-za-z0-9]
反義:[^0-9]:除了0-9之外的其他乙個字元
轉義字元類:
\w:代表[a-za-z0-9_]
\w:代表[^a-za-z0-9_]
\d:代表[0-9]
\d:代表[^0-9]
\s:代表空白字元
\s:代表非空白字元
var str = 'cat121cotcdtcoot';
console.log(str.match(/c.t/g)); // ["cat", "cot", "cdt"]
console.log(str.match(/c[ao]t/g)); // ["cat", "cot"]
console.log(str.match(/[a-z][0-9]/g)); // ["t1"]
console.log('wq520'.match(/[^0-9]/g)); // ["w", "q"]
5.重複
:最少重複a次,最多重複b次
:匹配a到任意次
*: +:
?:
console.log('aaaaaaa'.match(/a/g)); // ["aaaa", "aaa"]
console.log('aaaa'.match(/.*/g)); // ["aaaa", ""]
console.log('aaaa'.match(/.+/g)); // ["aaaa"]
console.log('aaaa'.match(/.?/g)); // ["a", "a", "a", "a", ""]
6.非貪婪匹配:任何範圍性重複,在重複的次數後增加?就可以實現最小匹配次數
console.log('abcdefg'.match(/\w?/)); // ["a", index: 0, input: "abcdefg", groups: undefined]
console.log('abcdefg'.match(/\w?/g)); // ["a", "b", "c", "d", "e", "f", "g"]
console.log('abcdefg'.match(/\w?/g)); // ["ab", "cd", "ef"]
console.log('abcdefg'.match(/.*?/g)); // ["", "", "", "", "", "", "", ""]
7.或者 |
console.log('abcdef'.match(/abc|def/)); // ["abc", index: 0, input: "abcdef", groups: undefined]
console.log('abcdef'.match(/abc|def/g)); // ["abc", "def"]
8.^以…開頭 $以…結尾
console.log('2013-08-081'.match(/^\d-\d-\d$/)); // null
console.log('2013-08-081'.match(/\d-\d-\d/)); // ["2013-08-08", index: 0, input: "2013-08-081", groups: undefined]
9.分組: 使用()完成分組
console.log(/\d(-\d)/.test('1908-23-12')); // true
console.log('13955415175'.replace(/(\d)(\d)(\d)/,'$1****$3')) // 139****5175
console.log(''.replace(/(<\/?)(\w+)/g,'$1div')) //
?= 與 ?!
?= 緊跟其後是
?! 緊跟其後不是
console.log('abac'.match(/\w(?=c)/g)) // ["a"]
console.log('abac'.match(/\w(?!c)/g)) // ["a", "b", "c"]
console.log('abac'.match(/\w+(?=c)/g)) // ["aba"]
js正規表示式總結
1,斜槓用於轉義,在js正則裡,只有一些元字元 等 和 本身需要轉義,其他的不需要轉義,如果其他的字元前面使用了 可能會產生負面影響,比如 b,t這些有特殊含義的轉義。此外,在js正則中,還有乙個用處在於使用new regexp 形式建立正則物件時,比如new regexp a a 其中 是乘以的意...
js正規表示式總結
常用字元代表含義 匹配除換行符以外的任意字元 匹配 字串的開頭,a 匹配 an a 而不匹配 an a 匹配 字串的結尾,a 匹配 an a 而不匹配 an a 匹配前面元字元0次或多次,ba 將匹配b,ba,baa,baaa 匹配前面元字元1次或多次,ba 將匹配ba,baa,baaa 匹配前面元...
js 正規表示式總結
正則也用了很多了,而真正自己寫的正則到真是寥寥無幾呀,不是貼上複製,就是貼上複製修改,有時候對於一些正則還不是很理解匹配的過程,覺得這作為程式設計師最基本的知識還是應該自己寫一下正則比較好,所以重新又看了一下正則,做一下記錄,以備以後自己複習和使用 正則主要是用於操作字串 驗證字串是不是合法 查詢符...