欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript exec

劉若蘭1年前8瀏覽0評論

javascript中的exec()方法,可用于在字符串中查找匹配正則表達(dá)式的值。該方法可返回第一個(gè)匹配項(xiàng)的信息,以數(shù)組形式進(jìn)行返回,包含匹配的值,匹配到的位置及原始字符串。exec()方法是使用RegExp對象調(diào)用的,不能直接使用字符串調(diào)用。

const re = /quick\s(brown).+?(jumps)/ig;
const str = 'The Quick Brown Fox Jumps Over The Lazy Dog';
const matches = re.exec(str);
console.log(matches[0]); //"Quick Brown Fox Jumps"
console.log(matches[1]); //"Brown"
console.log(matches[2]); //"Jumps"
console.log(matches.index); //4
console.log(matches.input); //"The Quick Brown Fox Jumps Over The Lazy Dog"

在正則表達(dá)式的全局標(biāo)志(g)開啟時(shí),每次執(zhí)行exec()方法將從上一次匹配后的位置繼續(xù)向下進(jìn)行匹配。通過while循環(huán),能夠找到所有匹配項(xiàng)。如果沒有找到匹配項(xiàng),將返回null。

const re = /quick\s(brown).+?(jumps)/ig;
const str = 'The Quick Brown Fox Jumps Over The Lazy Dog';
let matches;
while(matches = re.exec(str)){
console.log(matches[0]);
console.log(matches[1]);
console.log(matches[2]);
}
/*
Quick Brown Fox Jumps
Brown
Jumps
*/

在上面的例子中,通過while循環(huán),可以輸出所有匹配項(xiàng)的信息。同時(shí),注意到matches不應(yīng)該在循環(huán)條件中聲明,直接賦值即可。聲明matches變量的目的是,將匹配項(xiàng)保存在變量中,方便后續(xù)的操作。

此外,exec()還有其他應(yīng)用場景。當(dāng)正則表達(dá)式中指定捕獲組時(shí),exec()方法會將捕獲的組作為數(shù)組項(xiàng)返回,第一項(xiàng)為全匹配項(xiàng),后續(xù)項(xiàng)為各個(gè)捕獲組的信息。在這種情況下,返回的數(shù)組對象還會有一個(gè)groups屬性,在捕獲組較多時(shí),這個(gè)屬性能夠更好地幫助用戶辨識捕獲組的信息。

const pattern = /(\d{4})-(\d{2})-(\d{2})/;
const dateString = '2019-11-05';
const match = pattern.exec(dateString);
console.log(match[0]); //"2019-11-05"
console.log(match[1]); //"2019"
console.log(match[2]); //"11"
console.log(match[3]); //"05"
console.log(match.groups); //undefined

在上面的例子中,正則表達(dá)式中指定了三個(gè)捕獲組,對應(yīng)日期中的年、月、日。匹配成功后,返回了包含全匹配項(xiàng)及捕獲組的數(shù)組信息。但在這個(gè)例子中,沒有使用JavaScript對捕獲組的支持。當(dāng)與JavaScript的RegExp相結(jié)合時(shí),可獲得更完整的捕獲組信息。

const pattern = /(?<year>\d{4})-(?<month>\d{2})-(?<date>\d{2})/;
const dateString = '2019-11-05';
const match = pattern.exec(dateString);
console.log(match[0]); //"2019-11-05"
console.log(match.groups.year); //"2019"
console.log(match.groups.month); //"11"
console.log(match.groups.date); //"05"

在上面的例子中,正則表達(dá)式中指定的捕獲組均被命名為year、month、date,匹配成功后,除了返回了數(shù)組信息外,還有包含命名捕獲組的信息。使用命名捕獲組能夠更清晰地辨識數(shù)組中的各項(xiàng),也方便代碼的閱讀及編輯。

總而言之,JavaScript的exec()方法十分強(qiáng)大,基于正則表達(dá)式進(jìn)行字符串匹配時(shí),exec()方法是重要的工具之一。在熟練掌握該方法的使用之后,我們能夠更好地完成各種字符串處理任務(wù)。