js正則表達
新建正規表示式有兩種方法:
(1)使用字面量
var regex = /xyz/;
(2)使用regexp建構函式
var regex = new regexp('xyz');
正則的使用
regex.test(string)
string.match(regex)
正則的匹配規則
1.字面量字元和元字元
大部分字元正規表示式,就是字面的含義
/a/匹配a, /b/匹配b
元字元:
(1)點字元.:匹配除回車(\r),換行(\n),行分隔符(\u2028),段分隔符(\u2029),以外的所有字元
/c.t/
(2)位置字元:提示字元所處的位置,主要有兩個字元
^字串的開始位置和$字串的結束位置
(3)選擇符|:表示或關係,cat|dog 11|22
(4)轉義符\:對特殊字元的處理\+
正則中需要用到反斜槓的^、.、[、$、(、)、|、*、+、?、表示,表示恰好重複n次,表示至少重複n次,表示重複不少於n次,不
多於m次
量詞符設定某個模式出現的次數
?表示某個模式出現0或者1次=>
*表示某個模式出現0次或者多次,等同於
+表示某個模式出現1次或多次,等同於
貪婪模式
例如/a+/.match('aaa') => ["aaa"],因為不知道到底是多少個匹配,所以會一直匹配下去,直到匹配不到
非貪婪模式,即阻止貪婪模式的出現
/a+?/.match('aaa') => ["a"]
非貪婪模式還有*?和+?
修飾服表示模式的附加規則,放在正則表達是的最尾部.
可以單個使用,也可以多個一起使用
//單個修飾符
var regex = /test/i;
//多個修飾符
var regex = /test/ig;
修飾符(1)g修飾符
預設情況,正則第一次匹配到之後,就不會往下繼續匹配,g修飾符表示全域性匹配,加上之後,正則物件將匹配
全部符合條件的結果.
(2)i修飾符
預設情況下,正則區分字母的大小寫,加上i修飾符,可以忽略大小寫.
/abc/.test('abc') //false
/abc/i.test('abc') //true
(3)m修飾符
m修飾符表示多行模式(multiline),可以識別換行符(\n)
例:/world$/.test('hello world\n') //false
/world$/m.test('hello world\n') //true
/^b/m.test('a\nb') //true
組匹配正規表示式括號表示分組匹配,貨號中的模式可以用來匹配分組的內容
/fred+/.test('fredd') //true
/(fred)+/.test('fredfred') //true
'abcabc'.match(/(.)b(.)/); => ['abc', 'a', 'c']
非捕獲組
場景:假定匹配foo或者foofoo,正規表示式:/(foo)/,這樣的話占用了乙個組匹配,組匹配中的(括號中)
的內容也會單獨輸出,這個時候,可以使用非捕獲組/(?:foo)/不會單獨輸出括號中的內容.
'abc'.match(/(?:.)b(.)/); => ['abc', 'c']
先行斷言
x(?=y),x只有在y前面才匹配,y不會被計入返回結果.
例:/\d+(?=%)/ => 後面跟著%號的數字
'abc'.match(/b(?=c)/); => ["b"]
先行否定斷言
x(?!y),x只有不再y前面的情況才匹配,y不會被計入返回結果.
例:/\d+(?!%)/ => 後面不是%的數字
/\d+(?!\.)/.exec('3.14'); => ['14']
JS正規表示式 學習筆記
regexp是正規表示式的縮寫。採用new運算子建構函式定義 var reg new regexp box 採用字面量方式 定義 var reg pattern i 忽略大小寫 g 全域性匹配 m 多行匹配 test 檢索字串中的指定值,返回boolern 通常用來判斷所給的值是否符合正規表示式 返...
js學習筆記(正規表示式)
這些心得是萌新作者再學習過程中的作業上發現的,希望大佬們如果發現有錯誤和有更加好的意見務必提出。正規表示式定義的是乙個規則,乙個與字串匹配的規則。我的題目是 1.字串中只能有字母或數字 2.至少是8位 3.數字至少出現兩次 輸入 var str prompt 驗證 function inspecti...
JS筆記 正規表示式
正規表示式用於定義一些字串的規則,計算機可以根據正規表示式,來檢查乙個字串是否符合規則,獲取將字串中符合規則的內容提取出來。建立正規表示式物件 語法 var 變數 new regexp 正規表示式 匹配模式 使用typeof檢查正則物件,會返回object。在建構函式中可以傳遞乙個匹配模式作為第二個...