javascript 正規表示式入門到高階 02

2021-07-28 19:23:49 字數 4796 閱讀 1765

量詞,很常見,所以在正則裡面也有量詞-->乙個東西出現的次數。

常見形式:

(n,m) 最少出現n次,最多m次;

(n, )      最少出現n次,最多不限;

(,m )   最少不限,最多m次;

+-->     量詞:任意長度;==(1, );

?           (0,1);

*          (0, )前一項零次或者多次

|            或;

行首和行尾   ^ $  常用校驗--去掉首位的空。

(?=)    會作為匹配校驗,但不會出現在匹配結果字串裡面

(?:)     會作為匹配校驗,並出現在匹配結果字元裡面,它跟(...)不同的地方在於,不作為子匹配返回。

vardata ='windows 98 is ok';

data.match(/windows (?=\d+)/);// ["windows "]

data.match(/windows (?:\d+)/);// ["windows 98"]

data.match(/windows (\d+)/);// ["windows 98", "98"]

x  匹配最少m個最多n個x

x? 匹配的是0個或者 1個x;

正則中問號的用法:

在表示重複的字元後面加問號,比如+?,*?,?可以停止匹配的貪婪模式

1

2

3

4

5

6

7

8

9

10

11

varpattern=/\w/;

console.log("aaaa".match(pattern)[0]);

/*結果"aaa";貪婪模式下會盡可能多的匹配,

所以會匹配3個重複的字元

*/

varpattern2=/\w?/;

console.log("aaaa".match(pattern2)[0]);

/*

*結果"aa";加問號後會盡可能少的匹配重複次數,

*所以匹配到了2個重複的字元

*/

在分組內使用?:可以產生沒有編號的分組,比如

?

1

2

3

4

5

6

7

8

9

10

11

12

varpattern=/(ab)\w+(ba)/;

console.log("abcba_".replace(pattern,"$1"));

/*結果"ab_";匹配到的字元被第乙個分組(ab)

*替換

*/

varpattern2=/(?:ab)\w+(ba)/;

console.log("abcba_".replace(pattern2,"$1"));

/*

*結果"ba_";第一次分組內加入了?:,產生的是乙個

*沒有編號的分組,所以$1匹配的字元是第二個分組,

*也就是第乙個編號分組(ba)相匹配的文字內容

*/

(?=)和(?!);零寬正向斷言和負向斷言,括號內表示某個位置右邊必須和=右邊匹配上,或者不和!後的字元匹配。

?

1

2

3

4

5

6

7

8

9

10

11

varpattern=/str(?=ings)ing/;

console.log("strings.a".match(pattern));

console.log("strings.a".match(/string(?=s)/));

console.log("string_x".match(pattern));

console.log("string_x".match(/string(?=s)/));

/*前兩個結果是["string"],後兩個結果是null;

*str(?=ings)ing/匹配"string",r後面的位置右邊必須跟

*上ings;和/string(?=s)/一樣;匹配"string";g後面的位置

*的右邊必須跟乙個s。"string_x"雖然也含有"string"但是

*不滿足(?=...)括號內的條件

*/

?1

2

3

4

5

6

varpattern=/string(?!s)/;

console.log("strings".match(pattern));//null

console.log("string.".match(pattern));//["string"]

/*(?!...)某位置右邊不能有!後匹配的字元,

*string(?!s)/匹配"string","g"後不能跟"s"

*/

在表示重複次數時,代表重複0次或1次

eg:

var arr =  '我的qq號是:1310596493,你的qq是523348562嗎?';

var re = /[1-9]\d/g; //後面跟4-10個普通的數字。

alert(arr.match(re));

結果:1310596493,523348562

備註:判斷是否有中文存在    [\u4e00-\u9fa5]-- 漢字的第乙個字和最後乙個漢字;中間的是utf-8格式的漢字。

示例:1)「偷」**,因為複製的話有html**,所以利用正則消除**。

**:

window.onload = function();};

這個正則還不是完善的,因為有的**還是不能消除,所以需要自己再改寫。
2) 郵箱驗證:var

re =

/^\w+@[a-z0-9]+\.[a-z]$/

;3)去掉行首行尾的空格:var re = /^\s|\s$/g;

4)getbyclass()選元素的完美封裝

function getbyclass(oparent,oclass) }

return aresult;

}

Javascript正規表示式

這段時間學習js,正好遇到了正規表示式。下面通過使用例項介紹一下正規表示式。正規表示式,又稱正規表示法 常規表示法 英語 regular expression,在 中常簡寫為regex regexp或re 電腦科學的乙個概念。正規表示式使用單個字串來描述 匹配一系列符合某個句法規則的字串。在很多文字...

JavaScript 正規表示式

一 什麼是正規表示式 正規表示式 regular expression 是乙個描述字元模式的物件。測試正規表示式 regexp 物件包含兩個方法 test 和exec 功能基本相似,用於測試字串匹配。test 方法在字串中查詢是否存在指定的正規表示式並返回布林值,如果存在則返回true,不存 在則返...

javascript 正規表示式

正規表示式 regexp物件 主要用於表單驗證 1 建立正規表示式 1 var ret pattern pattern是內容,可以是正規表示式的內容,可以是字元或是其他的內容 2 var rag new regexp pattern 括號內可以是雙引號或者單引號 2 正規表示式的exec方法 reg...