国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

正則表達式知識點整理

2024-04-27 15:09:33
字體:
來源:轉載
供稿:網友

一.創建正則表達式的兩種方式

1. 通過構造函數定義:var 變量名 = new RegExp(/表達式/);
2.字面量:var 變量名 = /表達式/;

二.認識正則符號:

注:括號內,前面加個元字符^進行取反,表示匹配不能為括號里面的字符。eg:console.log(/[^abc]/.test(‘a’)); 答案是false;
簡寫 完整寫法 語意
. [^/n/r] 除了換行和回車以外的任意字符
/d [0-9] 數字字符
/D [^0-9] 非數字字符
/s [/t/n/xOB/f/r] 空白字符
/S [^/t/n/xOB/f/r] 非空白字符
/w [a-zA-Z_0-9] 單詞字符
/W [^a-zA-Z_0-9] 非單詞字符

三.元字符

1.基本元字符

.匹配任意的非換行字符,常常表示通用元字符使用
[]匹配一個出現在[]中的字符,eg:[123],[a-z]
()1.分組 2.提升優先級
或者 eg:foot|food表示匹配foot或者food 注:|的優先級很低

2.限定元字符

符號語意
+一個或者多個{1,}
*0個或者多個{0,}
0個或者1個
{n}取n個
{n,}取n個到多個
{n,m}取n個到m個

3.首尾元字符

符號語意
^1.必須以什么開頭2.表示否定
$1.必須以什么結尾2.表示組引用eg: a(b)c

4.其它

符號語意
(?:)表示不加入到數組中

eg:

var s = '1234567'; var r1 = /(/d)(/d/d/d)(/d/d)(/d)/; r1.exec( s ); // => [ '1234567', '1', '234', '56', '7' ] var r2 = /(/d)(?:/d/d/d)(/d/d)(/d)/; r2.exec( s ); // => [ '1234567', '1', '56', '7' ]

四.方法

方法說明
test用來檢測字符串是否符合定義的正則規則
exec利用正則表達式去處理字符串,并將字符串中符合正則表達式的數據提取出來,(1).如果匹配上了,就返回數組,第0項就是匹配到的結果(2)如果正則表達式 中有分組也就是有(),那么對應的第n組匹配到的結果就是在這個數組中的第n項,n從1開始(3)如果沒有匹配的則返回null;
replacereplace(正則表達式,需要替換的字符串)

1.exec方法的進一步說明: (1)exec匹配提取,只能匹配提取第一個被捕獲的數據 所以如果需要匹配字符串中所有符合要求的字符串,需要開啟全局模式,這種情況下,調用一次exec方法就會在上一次的基礎上匹配。 eg:

var data = '1234567'; var p = //d/g; p.exec(data);//["1"] p.exec(data);//["2"] ... p.exec(data);//null p.exec(data);//["1"]一般我們通過以下方法實現:var a = "1234567ni";var p = //d/g;var m;var arr = [];while((m = p.exec(a)) != null){ arr.push(m);}console.log(arr);

(2)正則表達式的貪婪模式:如果一個正則表達式中有多個.+或者.*的結構,那么在匹配的時候就會造成歧義,這時候就滿足一個規則,即貪婪模式;在貪婪模式中,從左到右匹配個數的能力是左強右弱,而且是只有兩個級別的,要么強,要么弱。

eg:

var ddd = "1234567"; "123456" "" "7"var pp = /(.+)(.*)(.+)/;pp.exec(ddd) //["1234567", "123456", "", "7"]

2.replace方法的進一步說明: (1) 例如將var data = “abccdad”中的a全部替換成e;

data.replace(/[a]/g,"e");

(2)在替換中也可以使用到組 例如常用的更改年月日的顯示方式,將2015-1-10改成2015年1月10日

var data = "2015-1-10";var pp = /(/d+)-(/d+)-(/d+)/;data.replace(pp,'$1年$2月$3日');

(3)在替換的時候,第二個參數也可以是一個函數,而函數的參數表示的是匹配到的數組的值,因此前邊日期的替換我們可以利用函數的返回值替換匹配到的結果。

var data = "2015-1-10";var pp = /(/d+)-(/d+)-(/d+)/;data.replace(pp,function(match,n1,n2,n3){ return n1 + '年' + n2 + '月' + n3 + '月';})
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 栖霞市| 年辖:市辖区| 徐州市| 阿拉尔市| 普宁市| 博乐市| 南木林县| 深水埗区| 电白县| 洪湖市| 都江堰市| 连云港市| 镇康县| 洛南县| 宁河县| 九江县| 万全县| 胶州市| 辽阳县| 基隆市| 双城市| 余江县| 西昌市| 开封县| 泸州市| 深圳市| 五寨县| 将乐县| 淳安县| 图片| 鞍山市| 英山县| 峨眉山市| 城固县| 浦县| 南城县| 涟水县| 大埔区| 张家口市| 韶山市| 元阳县|