中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS正則表達式詳解

發布時間:2020-07-30 07:38:07 來源:網絡 閱讀:2265 作者:web_0315 欄目:web開發

1.正則語法規則

[xyz]

字符集,匹配任何一個包含的字符

[^xyz]

否定字符集,匹配未包含的字符

\w

數字字母下劃線

\W

非數字字母下劃線

\s

空白字符

\S

非空白字符

\d

匹配數字

\D

匹配非數字

\b

單詞開頭或結束的位置

\B

非單詞開頭或結束的位置

^

開始位置

$

結束位置

示例:簡易郵箱匹配

var r = /[\w.-]@[\w.-]/
//或者
var r = new RegExp('[\w.-]@[\w.-]','');

var emali = '@'
console.log(r.test(emali)); //false

var emali = 'web@qq'
console.log(r.test(emali)); //true


2.重復

* 代表匹配0次或多次
+ 代表匹配1次或多次
? 代表匹配0次或1次
{n} 指定匹配次數
{n,} 匹配n次或更多
{n,m} 匹配n到m次
var r = /^[\w.]+@[\w.]+$/
r.test('web@qq.com')    //true


3.屬性flags

source          --s 正則的原始字符串形式
ignoreCase   --i 忽略大小寫
global           --g 全局匹配,匹配后不中止
multiline        --m 如果字符串有換行,按多行匹配


4.方法

1.test() 方法,測試指定字符串是否滿足對應的正則規則
2.exec() 方法,返回匹配內容等信息組成的對象
3.match() 方法,這是一個字符串的方法,與exec方法作用類似,區別是對g的解釋不通,exec方法使用g標記時需要多次遍歷,match方法回一次返回所有匹配內容
//如下:
var target = 'bg.jpg index.html app.js index.css test.jpg';
var r = /(\w+)\.jpg/g;

//match方法
console.log(target.match(r));
//結果
//(2) ["bg.jpg", "test.jpg"]

//exec方法
console.log(r.exec(target));
console.log(r.exec(target));
//結果
//(2) ["bg.jpg", "bg", index: 0, input: "bg.jpg index.html app.js index.css test.jpg", groups: undefined]
//(2) ["test.jpg", "test", index: 35, input: "bg.jpg index.html app.js index.css test.jpg", groups: undefined]


5.分組與捕獲

1.分組的用法:

//普通寫法
var r = /123123123/;
console.log(r.exec("20191231231232019"));

//分組的寫法
var r = /(123){3}/
console.log(r.exec("20191231231232019"));

//除了上面的使用場景,還可以用來做'或'匹配
var r = /hello (world|js)/;
console.log(r.test("hello world"));    //true
console.log(r.test("hello js"));    //true


2.那么什么是捕獲呢?看下面這個例子

使用了分組的表達式返回時除了匹配到的完整內容,還帶有了捕獲到哪些字符串

JS正則表達式詳解

3.非捕獲型分組

var r = /(web) say hello (world|js)/;
console.log(r.exec("web say hello world"));
//返回值 (3) ["web say hello world", "web", "world", index: 0, input: "web say hello world", groups: undefined]
//這里的world其實不需要捕獲,只是用來做一個或匹配的

var r = /(web) say hello (?:world|js)/;
console.log(r.exec("web say hello world"));
//返回值 (2) ["web say hello world", "web", index: 0, input: "web say hello world", groups: undefined]
//這就是非捕獲型匹配


6.貪婪匹配與惰性匹配

var str = '<span>abc</span><span>qwe</span>';
var r = /<span>.*<\/span>/;

r.exec(str);
//執行結果
["<span>abc</span><span>qwe</span>", index: 0, input: "<span>abc</span><span>qwe</span>", groups: undefined]
//匹配了最長路徑,如果我們只想匹配到前面一部分,需要使用惰性匹配

var str = '<span>abc</span><span>qwe</span>';
var r = /<span>.*?<\/span>/;

r.exec(str);
//執行結果
["<span>abc</span>", index: 0, input: "<span>abc</span><span>qwe</span>", groups: undefined]
//在重復量詞后面加一個?,代表使用惰性匹配,盡可能短的匹配


7.正向前瞻/負向前瞻

var target = 'bg.jgp index.html app.js index.css test.jpg'
//從以上字符串中找出以jpg結尾的文件名,這里就需要用到正向前瞻了

var r = /\b(\w+)\.jpg/g;
console.log(target.match(r));
//["bg.jpg", "test.jpg"]
var r = /\b(\w+)(?=\.jpg)/g;
console.log(target.match(r));
//["bg", "test"]
//正向前瞻語法(?=) 負向前瞻語法(?!)
//正向前瞻表示必須后面跟有指定字符才算匹配成功,負向前瞻相反,必須不匹配指定字符才算匹配成功


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

明水县| 普兰店市| 黄骅市| 南平市| 许昌市| 双牌县| 固始县| 永泰县| 泗阳县| 平乡县| 平武县| 平阴县| 迁西县| 长顺县| 武强县| 陆丰市| 新营市| 茶陵县| 万山特区| 五寨县| 若尔盖县| 淮南市| 沁水县| 嘉义市| 沐川县| 方城县| 洪洞县| 合江县| 信丰县| 周至县| 丰县| 承德县| 济源市| 铁岭市| 大荔县| 建湖县| 宜兰县| 定襄县| 石城县| 六枝特区| 彩票|