JavaScript 實(shí)現(xiàn)基礎(chǔ) 正則表達(dá)式
更新時(shí)間:2009年08月26日 00:53:46 作者:
正則表達(dá)式用來從某一段字符串中匹配所需要的字符,這些字符可以非常簡(jiǎn)單,也可以非常復(fù)雜。JavaScript生來就對(duì)正則表達(dá)式有著良好的支持,在網(wǎng)絡(luò)的字符搜索匹配中發(fā)揮著重要的作用。
JavaScript通過RegExp類來支持正則表達(dá)式,舉一個(gè)最簡(jiǎn)單的例子:
var regApple = new RegExp("apple");
它可以匹配一個(gè)字符串中出現(xiàn)的第一個(gè)"apple"字符串,并且對(duì)大小寫敏感。在構(gòu)造方法中加入第二個(gè)參數(shù)"g"則代表的搜索出字符串中所有的 "apple",這里"g"代表"global"。如果第二個(gè)參數(shù)為"i",則代表著case-insensitive,匹配過程中將不考慮字母的大小寫。將上述兩者綜合起來,可以搜索出所有"apple"字符串,并且不考慮大小寫問題。
var regApple = new RegExp("apple", "gi");
正則表達(dá)式有著并不唯一的表示方法,使用Perl語言中的語法,可以將上述表達(dá)式表示為:
var regApple = /apple/gi;
創(chuàng)建了一個(gè)RegExp對(duì)象后,RegExp的方法可以構(gòu)造出不同的匹配方式,因?yàn)檎齽t表達(dá)式是對(duì)字符串進(jìn)行的操作,所以String的一些方法在構(gòu)造正則表達(dá)式的過程中也扮演著重要角色。
RegExp對(duì)象的方法
var sampleString = "Greenapple";
var regApple = /apple/;
alert(regApple.test(sampleString));
上面代碼輸出的結(jié)果是"true",因?yàn)閟ampleString中包含了需要匹配的字符串"apple",這是最簡(jiǎn)單的檢測(cè)方式。有時(shí),我們需要知道匹配的詳細(xì)結(jié)果,例如:
var sampleString = "green apples, red apples";
var regApple = /apple/g;
var arr = regApple.exec(sampleString);
通過使用exec()方法,返回的arr是關(guān)于匹配結(jié)果的一個(gè)數(shù)組,包括每一個(gè)匹配的值及其所在的段,例如上例中是"green apples"還是"red apples"。match()方法有著和exec()相同的功能,只是表達(dá)方式不同:
var sampleString = "green apples, red apples";
var regApple = /apple/g;
var arr = sampleString.match(regApple);
search()方法和indexOf()比較類似,返回第一個(gè)匹配的字符串所在的位置:
var sampleString = "green apples, red apples";
var regApple = /apple/gi;
alert(sampleString.search(regApple)); //輸出"6"
String的方法
String的replace()方法可以將指定的字符串替換為另一個(gè)字符串:
var sampleString = "There is a green apple.";
alert(sampleString.replace("green", "red")); //輸出"There is a red apple."
將replace()的第一個(gè)參數(shù)替換為一個(gè)正則表達(dá)式,可以達(dá)到同樣的效果:
var sampleString = "There is a green apple.";
var regApple = /apple/;
alert(sampleString.replace(regApple, "red")); //輸出"There is a red apple."
replace()的第二個(gè)參數(shù)可以替換為一個(gè)function(),該function()接受一個(gè)匹配字符串作為參數(shù),返回一個(gè)替換字符串。(存在疑問)
使用正則表達(dá)式可以實(shí)現(xiàn)String的split()方法相同的功能。
var fruit = "apple,pear,lemon";
var arr = fruit.split(",");
使用正則表達(dá)式:
var fruit = "apple,pear,lemon";
var reg = /\,/;
var arr = fruit.split(reg);
復(fù)制代碼 代碼如下:
var regApple = new RegExp("apple");
它可以匹配一個(gè)字符串中出現(xiàn)的第一個(gè)"apple"字符串,并且對(duì)大小寫敏感。在構(gòu)造方法中加入第二個(gè)參數(shù)"g"則代表的搜索出字符串中所有的 "apple",這里"g"代表"global"。如果第二個(gè)參數(shù)為"i",則代表著case-insensitive,匹配過程中將不考慮字母的大小寫。將上述兩者綜合起來,可以搜索出所有"apple"字符串,并且不考慮大小寫問題。
復(fù)制代碼 代碼如下:
var regApple = new RegExp("apple", "gi");
正則表達(dá)式有著并不唯一的表示方法,使用Perl語言中的語法,可以將上述表達(dá)式表示為:
復(fù)制代碼 代碼如下:
var regApple = /apple/gi;
創(chuàng)建了一個(gè)RegExp對(duì)象后,RegExp的方法可以構(gòu)造出不同的匹配方式,因?yàn)檎齽t表達(dá)式是對(duì)字符串進(jìn)行的操作,所以String的一些方法在構(gòu)造正則表達(dá)式的過程中也扮演著重要角色。
RegExp對(duì)象的方法
復(fù)制代碼 代碼如下:
var sampleString = "Greenapple";
var regApple = /apple/;
alert(regApple.test(sampleString));
上面代碼輸出的結(jié)果是"true",因?yàn)閟ampleString中包含了需要匹配的字符串"apple",這是最簡(jiǎn)單的檢測(cè)方式。有時(shí),我們需要知道匹配的詳細(xì)結(jié)果,例如:
復(fù)制代碼 代碼如下:
var sampleString = "green apples, red apples";
var regApple = /apple/g;
var arr = regApple.exec(sampleString);
通過使用exec()方法,返回的arr是關(guān)于匹配結(jié)果的一個(gè)數(shù)組,包括每一個(gè)匹配的值及其所在的段,例如上例中是"green apples"還是"red apples"。match()方法有著和exec()相同的功能,只是表達(dá)方式不同:
復(fù)制代碼 代碼如下:
var sampleString = "green apples, red apples";
var regApple = /apple/g;
var arr = sampleString.match(regApple);
search()方法和indexOf()比較類似,返回第一個(gè)匹配的字符串所在的位置:
復(fù)制代碼 代碼如下:
var sampleString = "green apples, red apples";
var regApple = /apple/gi;
alert(sampleString.search(regApple)); //輸出"6"
String的方法
String的replace()方法可以將指定的字符串替換為另一個(gè)字符串:
復(fù)制代碼 代碼如下:
var sampleString = "There is a green apple.";
alert(sampleString.replace("green", "red")); //輸出"There is a red apple."
將replace()的第一個(gè)參數(shù)替換為一個(gè)正則表達(dá)式,可以達(dá)到同樣的效果:
復(fù)制代碼 代碼如下:
var sampleString = "There is a green apple.";
var regApple = /apple/;
alert(sampleString.replace(regApple, "red")); //輸出"There is a red apple."
replace()的第二個(gè)參數(shù)可以替換為一個(gè)function(),該function()接受一個(gè)匹配字符串作為參數(shù),返回一個(gè)替換字符串。(存在疑問)
使用正則表達(dá)式可以實(shí)現(xiàn)String的split()方法相同的功能。
復(fù)制代碼 代碼如下:
var fruit = "apple,pear,lemon";
var arr = fruit.split(",");
使用正則表達(dá)式:
復(fù)制代碼 代碼如下:
var fruit = "apple,pear,lemon";
var reg = /\,/;
var arr = fruit.split(reg);
相關(guān)文章
javascript用正則表達(dá)式把1234567890替換為abcdefghij
javascript用正則表達(dá)式把1234567890替換為abcdefghij...2007-06-06正則表達(dá)式(RegExp)判斷文本框中是否包含特殊符號(hào)
有時(shí),我們希望判斷文本框中用戶輸入的字符是否含有特殊符號(hào)(*/#$@),就像用戶注冊(cè)時(shí)密碼框的填寫。下面小編給大家分享一個(gè)demo,感興趣的朋友一起看看吧2019-10-10正則表達(dá)式從原理到實(shí)戰(zhàn)全面學(xué)習(xí)小結(jié)
這篇文章主要介紹了全面學(xué)習(xí)正則表達(dá)式?-?從原理到實(shí)戰(zhàn),本文全面介紹正則表達(dá)式的語法知識(shí),全面介紹JavaScript中正則表達(dá)式的API,通過實(shí)戰(zhàn),希望能夠幫助大家全面學(xué)習(xí),并啃下前端的難題,需要的朋友可以參考下2022-07-07Web?前端常用正則校驗(yàn)規(guī)則整理(常用示例)
這篇文章主要介紹了Web前端常用正則校驗(yàn)規(guī)則,本文給大家整理一些常見的示例供大家學(xué)習(xí)參考,需要的朋友可以參考下2023-05-05修改月光博客網(wǎng)站中PHP常用正則表達(dá)式中出現(xiàn)的錯(cuò)誤
這篇文章主要介紹了修改月光博客網(wǎng)站中PHP常用正則表達(dá)式中出現(xiàn)的錯(cuò)誤,需要的朋友可以參考下2014-04-04