量詞,很常見,所以在正則裡面也有量詞-->乙個東西出現的次數。
常見形式:
(n,m) 最少出現n次,最多m次;
(n, ) 最少出現n次,最多不限;
(,m ) 最少不限,最多m次;
+--> 量詞:任意長度;==(1, );
? (0,1);
* (0, )前一項零次或者多次
| 或;
行首和行尾 ^ $ 常用校驗--去掉首位的空。
(?=) 會作為匹配校驗,但不會出現在匹配結果字串裡面
(?:) 會作為匹配校驗,並出現在匹配結果字元裡面,它跟(...)不同的地方在於,不作為子匹配返回。
var
data =
'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
var
pattern=/\w/;
console.log(
"aaaa"
.match(pattern)[0]);
/*結果"aaa";貪婪模式下會盡可能多的匹配,
所以會匹配3個重複的字元
*/
var
pattern2=/\w?/;
console.log(
"aaaa"
.match(pattern2)[0]);
/*
*結果"aa";加問號後會盡可能少的匹配重複次數,
*所以匹配到了2個重複的字元
*/
在分組內使用?:可以產生沒有編號的分組,比如
?
1
2
3
4
5
6
7
8
9
10
11
12
var
pattern=/(ab)\w+(ba)/;
console.log(
"abcba_"
.replace(pattern,
"$1"
));
/*結果"ab_";匹配到的字元被第乙個分組(ab)
*替換
*/
var
pattern2=/(?:ab)\w+(ba)/;
console.log(
"abcba_"
.replace(pattern2,
"$1"
));
/*
*結果"ba_";第一次分組內加入了?:,產生的是乙個
*沒有編號的分組,所以$1匹配的字元是第二個分組,
*也就是第乙個編號分組(ba)相匹配的文字內容
*/
(?=)和(?!);零寬正向斷言和負向斷言,括號內表示某個位置右邊必須和=右邊匹配上,或者不和!後的字元匹配。
?
1
2
3
4
5
6
7
8
9
10
11
var
pattern=/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
var
pattern=/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) 郵箱驗證:var4)getbyclass()選元素的完美封裝:re =
/^\w+@[a-z0-9]+\.[a-z]$/
;3)去掉行首行尾的空格:var re = /^\s|\s$/g;
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...