摘要:的正則表達(dá)式體系是參照建立的。字面量形式構(gòu)造函數(shù)形式以上都是創(chuàng)建了一個(gè)內(nèi)容為的正則表達(dá)式,其表示對(duì)一個(gè)手機(jī)號(hào)碼的校驗(yàn)。按照給定的正則表達(dá)式進(jìn)行替換,返回替換后的字符串。
正則表達(dá)式,也稱規(guī)則表達(dá)式,經(jīng)常使用其來(lái)完成對(duì)字符串的校驗(yàn)和過(guò)濾。由于正則表達(dá)式的靈活性、邏輯性和功能性都非常強(qiáng)大,而且 可以利用很簡(jiǎn)單的方式完成對(duì)復(fù)雜字符串的控制,所以很多程序語(yǔ)言都支持正則表達(dá)式。在JavaScript中正則表示也非常強(qiáng)大和實(shí)用。
基本形式正則表達(dá)式(regular expression)是一種表達(dá)文本模式(即字符串結(jié)構(gòu))的方法,有點(diǎn)像字符串的模板,常常用作按照“給定模式”匹配文本的工具。比如,正則表達(dá)式給出一個(gè)Email地址的模式,然后用它來(lái)確定一個(gè)字符串是否為Email地址。JavaScript的正則表達(dá)式體系是參照Perl 5建立的。
新建正則表達(dá)式有兩種方法。一種是使用字面量,以斜杠表示開(kāi)始和結(jié)束。
// 字面量形式 var telRegex1 = /^1[3|5|7|8]d{9}$/; // 構(gòu)造函數(shù)形式 var telRegex2 = new RegExp("^1[3|5|7|8]d{9}$");
以上都是創(chuàng)建了一個(gè)內(nèi)容為^1[3|5|7|8]d{9}$的正則表達(dá)式,其表示對(duì)一個(gè)手機(jī)號(hào)碼的校驗(yàn)。必須以1開(kāi)始,第二位為3/5/7/8,之后為9位數(shù)字。
這兩種寫(xiě)法——字面量和構(gòu)造函數(shù)——在運(yùn)行時(shí)有一個(gè)細(xì)微的區(qū)別。采用字面量的寫(xiě)法,正則對(duì)象在代碼載入時(shí)(即編譯時(shí))生成;采用構(gòu)造函數(shù)的方法,正則對(duì)象在代碼運(yùn)行時(shí)生成??紤]到書(shū)寫(xiě)的便利和直觀,實(shí)際應(yīng)用中,基本上都采用字面量的寫(xiě)法。
有一點(diǎn)需要注意,使用構(gòu)造函數(shù)創(chuàng)建正則表達(dá)式時(shí),傳入的參數(shù)是字符串形式的,在字符串內(nèi)部,本身也是一個(gè)轉(zhuǎn)義符,因此需要再使用一個(gè)來(lái)對(duì)其進(jìn)行正則表達(dá)式的轉(zhuǎn)義。上面第二個(gè)示例中,d才能代表任意數(shù)字。
關(guān)于正則表達(dá)式中,各種符號(hào)的含義,以及使用方法,請(qǐng)看后面的介紹:
元字符一些常用的元字符如下:
. 匹配除換行符之外的任意字符
w 匹配字母或數(shù)字或下劃線或漢字
s 匹配任意的空白符
d 匹配數(shù)字
匹配單詞的開(kāi)始或結(jié)束
^ 匹配字符串的開(kāi)始處
$ 匹配字符串的結(jié)束處。
* 匹配前面的子表達(dá)式任意次。
? 匹配前面子表達(dá)式0次或一次,等價(jià)于{0, 1}。
+ 匹配之前子表達(dá)式一次到多次,等價(jià)于{1, }。
{n} 匹配之前的子表達(dá)式n次。
{m,n} 匹配之前的子表達(dá)式最少m次,最多n次。
{n, } 匹配之前的子表達(dá)式至少n次。
[xyz] 字符集合,表示其中任意一個(gè)字符。表示范圍可用-鏈接,例如[a-z] 表示a-z之間的任意一個(gè)字母。還可以這樣書(shū)寫(xiě)[A-Za-z0-9]。
[^xyz] 字符即可,表示非其中任意一個(gè)字符。表示范圍可用-鏈接,例如[^a-z] 表示非 a-z之間的任意一個(gè)字母。
| 表示或(or)關(guān)系,例如 com|cn,表示匹配com或者cn。
() 用于分組,其分組中的內(nèi)容可已通過(guò)$1-$9按順序獲取(字符串相關(guān)方法中),之后的正則中也可以通過(guò)1-9進(jìn)行引用(正則表達(dá)式內(nèi)部)。(分組0表示整個(gè)正則匹配內(nèi)容或整個(gè)正則表達(dá)式)
在正則表達(dá)式中,以上這些以及一些未列出的元字符都是有自身含義的,如果我們需要匹配這些元字符本身,可以使用對(duì)其進(jìn)行轉(zhuǎn)義即可。
更多元字符可以查看:正則表達(dá)式
屬性 修飾符ignoreCase:返回一個(gè)布爾值,表示是否設(shè)置了i修飾符,該屬性只讀。
global:返回一個(gè)布爾值,表示是否設(shè)置了g修飾符,該屬性只讀。
multiline:返回一個(gè)布爾值,表示是否設(shè)置了m修飾符,該屬性只讀。
sticky:ES6返回一個(gè)布爾值,表示是否設(shè)置了y修飾符,只讀。
var r = /abc/igm; r.ignoreCase; // true r.global; // true r.multiline; // true匹配時(shí)屬性
lastIndex:返回下一次開(kāi)始搜索的位置。該屬性可讀寫(xiě),但是只在設(shè)置了g修飾符時(shí)有意義。
source:ES5返回正則表達(dá)式的字符串形式(不包括反斜杠),該屬性只讀。
flags:ES6返回正則表達(dá)式中的修飾符。
var r = /abc/igm; r.lastIndex; // 0 r.source; // "abc" r.flags; //"igm"方法 test()
正則對(duì)象的test對(duì)象接收一個(gè)字符串,表示測(cè)試字符串,返回一個(gè)布爾值,表示是此字符串是否滿足匹配條件。
telRegex1.test("13612341234"); // true telRegex2.test("13612341234"); // true telRegex1.test("136123412"); // false
如果正則表達(dá)式帶有g修飾符,則每一次test方法都從上一次結(jié)束的位置開(kāi)始向后匹配。同時(shí),可以通過(guò)正則對(duì)象的lastIndex屬性指定開(kāi)始搜索的位置。
var xReg = /x/g; var str = "xyz_x1_y1_x3"; xReg.lastIndex; // 0 xReg.test(str); // true xReg.lastIndex; // 1 xReg.test(str); // true xReg.lastIndex; // 5 // 指定位置開(kāi)始 指定下次匹配從最后一位開(kāi)始,就匹配不到了 xReg.lastIndex = 11; // 11 xReg.test(str); // false xReg.lastIndex; // 0
var indexReg = /^(?:http|https).+/jwebui/pages/themes/(w+)/1.jspx(?S+)?$/i ;
上面是一個(gè)F8中檢查是否為首頁(yè)的正則表達(dá)式。
最開(kāi)始的^ 和最后的$分別表示匹配的開(kāi)始和結(jié)束。
(?:http|https)表示兩者之一,這么寫(xiě)是非獲取的組匹配,()不會(huì)被分組存儲(chǔ)。也可以寫(xiě)成(http|https) 但是后面的1就需要替換成2了,因?yàn)檫@么寫(xiě)時(shí)此處形成了第一個(gè)分組。
.+ 就是任意字符至少出現(xiàn)一次。
/jwebui/pages/themes/ 就是匹配字符串"/jwebui/pages/themes/"。
(w+) 作為第一個(gè)分組,表示任意字母或數(shù)字或下劃線或漢字至少出現(xiàn)一次。
1表示對(duì)第一個(gè)分組的引用,再重復(fù)第一分組的內(nèi)容 。
.jspx 表示.jspx。
(?S+)? 表示(?S+) 匹配的內(nèi)容出現(xiàn)0次或一次。其中:
? 表示? 。
S+ 表示任意可見(jiàn)字符出現(xiàn)至少一次。
`
正則對(duì)象的exec方法,可以返回匹配結(jié)果。如果發(fā)現(xiàn)匹配,就返回一個(gè)數(shù)組,成員是每一個(gè)匹配成功的子字符串,否則返回null。
如果正則表示式包含圓括號(hào)(即含有“組匹配”),則返回的數(shù)組會(huì)包括多個(gè)成員。第一個(gè)成員是整個(gè)匹配成功的結(jié)果,后面的成員就是圓括號(hào)對(duì)應(yīng)的匹配成功的組。也就是說(shuō),第二個(gè)成員對(duì)應(yīng)第一個(gè)括號(hào),第三個(gè)成員對(duì)應(yīng)第二個(gè)括號(hào),以此類推。整個(gè)數(shù)組的length屬性等于組匹配的數(shù)量再加1。
var ipReg = /(d{1,3}.){3}(d{1,3})/; var ipStr = "My ip is "192.168.118.47" , please tell me yours"; ipReg.exec(ipStr); // ["192.168.118.47", "118.", "47"]
上面第一段代碼表示一個(gè)簡(jiǎn)單的IP檢驗(yàn),數(shù)字的1-3位之后緊跟一個(gè).,接著這個(gè)整體要出現(xiàn)3次,最后再有一段數(shù)字的1-3位。結(jié)果數(shù)組中,第一個(gè)值表示匹配到的結(jié)果,之后的表示正則分組匹配到的內(nèi)容。
如果正則表達(dá)式加上g修飾符,則可以使用多次exec方法,下一次搜索的位置從上一次匹配成功結(jié)束的位置開(kāi)始。同時(shí)還可以指定lastIndex,使之下次從指定位置開(kāi)始(可見(jiàn)之前的test示例)。
var ipLastReg = /d+(?=;)/g; var ipsStr = "192.168.118.47;192.168.118.46;192.168.118.48;"; ipLastReg.exec(ipsStr); // ["47"] ipLastReg.exec(ipsStr); // ["46"] ipLastReg.exec(ipsStr); // ["48"]
上面代碼中正則中的(?=;)表示先行斷言,表示只匹配在;前面d+。
字符串相關(guān)方法如果只是為了得到是否匹配,請(qǐng)使用 RegExp.test()方法或字符串實(shí)例的.search() 替代,效率更高。
之所以稱之為字符串相關(guān)方法是因?yàn)槠涫窃谧址险{(diào)用的(雖然ES6開(kāi)始,內(nèi)部調(diào)用的是正則上的方法,但還是在字符串上提供的入口)。
match():返回一個(gè)數(shù)組,成員是所有匹配的子字符串。
search():按照給定的正則表達(dá)式進(jìn)行搜索,返回一個(gè)整數(shù),表示匹配開(kāi)始的位置。
replace():按照給定的正則表達(dá)式進(jìn)行替換,返回替換后的字符串。
split():按照給定規(guī)則進(jìn)行字符串分割,返回一個(gè)數(shù)組,包含分割后的各個(gè)成員。
match()match方法對(duì)字符串進(jìn)行正則匹配,返回匹配結(jié)果。此方法方法與正則對(duì)象的exec方法非常類似:匹配成功返回一個(gè)數(shù)組,匹配失敗返回null。如果正則表達(dá)式帶有g修飾符,則該方法與正則對(duì)象的exec方法行為不同,會(huì)一次性返回所有匹配成功的結(jié)果。
var ipLastReg = /d+(?=;)/g; var ipsStr = "192.168.118.47;192.168.118.46;192.168.118.48;"; ipsStr.match(ipLastReg); // ["47", "46", "48"]
上面的正則是匹配IP中的最后一位,其中使用了(?=;)意為先行斷言,表示只匹配在;之前的內(nèi)容,但是不包括;。關(guān)于更多先行斷言,請(qǐng)看下文。
search()search方法,返回第一個(gè)滿足條件的匹配結(jié)果(可直接使用字符串,不一定是正則對(duì)象)在整個(gè)字符串中的位置。如果沒(méi)有任何匹配,則返回-1。
var nowDateStr = "2016-11-1"; var testReg = /-/g; nowDateStr.search(testReg); // 4 // 再次查找還是4 nowDateStr.search(testReg); // 4 // 檢查lastIndex 并設(shè)置 testReg.lastIndex; // 0 testReg.lastIndex = 6; nowDateStr.search(testReg); // 4 結(jié)果仍為4
replace()search方法總是從字符串的開(kāi)始位置查找,與正則表達(dá)式的g修飾符和lastIndex屬性無(wú)關(guān)。
replace方法可以替換匹配的值,返回替換后的新字符串。它接受兩個(gè)參數(shù),第一個(gè)是搜索模式(可直接使用字符串,不一定是正則對(duì)象),第二個(gè)是替換的內(nèi)容(可使用字符串或一個(gè)函數(shù))。搜索模式如果不加g修飾符,就替換第一個(gè)匹配成功的值,否則替換所有匹配成功的值。
其中replace方法的第二個(gè)參數(shù)可以使用美元符號(hào)$,用來(lái)指代所替換的內(nèi)容,具體如下所示:
$& 指代匹配的子字符串。
$` 指代匹配結(jié)果前面的文本。
$" 指代匹配結(jié)果后面的文本。
$n 指代匹配成功的第n組內(nèi)容,n是從1開(kāi)始的自然數(shù)。
$$ 指代美元符號(hào)$。
var re = /-/g; var str = "2016-11-01"; var newstr = str.replace(re,"."); console.log(newstr); // "2016.11.01" "hello world".replace(/(w+)s(w+)/, "$2 $1"); // "world hello" "abc".replace("b", "[$`-$&-$"]"); // "a[a-b-c]c"
第二個(gè)參數(shù)為函數(shù):
function toCamelStyle(str) { // 匹配-以及之后的一個(gè)字符,其中這個(gè)字符在一個(gè)分組內(nèi) var camelRegExp = /-([a-z])/ig; return str.replace(camelRegExp, function(all, letter) { // all為匹配到的內(nèi)容,letter為組匹配 return letter.toUpperCase(); }); } toCamelStyle("margin-left"); // "marginLeft" toCamelStyle("aa-bb-cccc"); // "aaBbCccc"
以上代碼展示通過(guò)正則將aa-bb-cccc這樣的字符串轉(zhuǎn)化為aaBbCccc 這種形式。replace回調(diào)函數(shù)接收兩個(gè)參數(shù),第一個(gè)為匹配到的內(nèi)容,第二個(gè)為匹配到的分組,有多少組就可以傳多少個(gè)參數(shù),在此之后還可以有兩個(gè)參數(shù),一個(gè)為匹配到內(nèi)容在原字符串的位置,另一個(gè)是原字符串。
split()split方法按照正則規(guī)則分割字符串,返回一個(gè)由分割后的各個(gè)部分組成的數(shù)組。該方法接受兩個(gè)參數(shù),第一個(gè)參數(shù)是分隔規(guī)則(可直接使用字符串,不一定是正則對(duì)象),第二個(gè)參數(shù)是返回?cái)?shù)組的最大成員數(shù)。
"2016-11-01".split("-"); // ["2016", "11", "01"] "2016-11-01".split(/-/); // ["2016", "11", "01"]貪婪模式和懶惰模式
當(dāng)正則表達(dá)式中包含能接受重復(fù)的限定符時(shí),通常的行為是(在使整個(gè)表達(dá)式能得到匹配的前提下)匹配盡可能多的字符,稱之為貪婪模式。
例如:
var s = "aaa"; s.match(/a+/); // ["aaa"]
有時(shí),我們更需要懶惰匹配,也就是匹配盡可能少的字符。前面給出的限定符都可以被轉(zhuǎn)化為懶惰匹配模式,只要在它后面加上一個(gè)問(wèn)號(hào)?。這樣.*?就意味著匹配任意數(shù)量的重復(fù),但是在能使整個(gè)匹配成功的前提下使用最少的重復(fù)。
var s = "aaa"; s.match(/a+?/); // ["a"]
以下是一些說(shuō)明
*? 重復(fù)任意次,但盡可能少重復(fù)
+? 重復(fù)1次或更多次,但盡可能少重復(fù)
?? 重復(fù)0次或1次,但盡可能少重復(fù)
{n,m}? 重復(fù)n到m次,但盡可能少重復(fù)
{n,}? 重復(fù)n次以上,但盡可能少重復(fù)
也就是說(shuō)默認(rèn)情況下,都是貪婪模式,加上一個(gè)?時(shí)就轉(zhuǎn)化為了懶惰模式,也稱非貪婪模式。
組匹配通常一個(gè)()中的內(nèi)容就構(gòu)成了一個(gè)分組,此分組內(nèi)容將被存儲(chǔ),可在之后的正則表達(dá)式(使用1-9)和相關(guān)方法中(使用 $1-$9)引用,前面已經(jīng)介紹過(guò)了,就不再說(shuō)了。
關(guān)于組匹配,還有以下幾種情況:
非捕獲組(?:x) 稱為非捕獲組(Non-capturing group),表示不返回該組匹配的內(nèi)容,即匹配的結(jié)果中不計(jì)入這個(gè)括號(hào)。
// 正常匹配 var url = /(http|ftp)://([^/ ]+)(/[^ ]*)?/; url.exec("http://google.com/"); // ["http://google.com/", "http", "google.com", "/"] // 非捕獲組匹配 var url = /(?:http|ftp)://([^/ ]+)(/[^ ]*)?/; url.exec("http://google.com/"); // ["http://google.com/", "google.com", "/"]
先行斷言之后先行斷言和先行否定斷言也都是非捕獲組
x(?=y)稱為先行斷言(Positive look-ahead),x只有在y前面才匹配,y不會(huì)被計(jì)入返回結(jié)果。
比如之前匹配ip的例子:
var ipLastReg = /d+(?=;)/g; var ipsStr = "192.168.118.47;192.168.118.46;192.168.118.48;"; ipsStr.match(ipLastReg); // ["47", "46", "48"]
上面正則對(duì)象中(?=;)就表示只匹配在;之前的內(nèi)容,但是不包括;。
先行否定斷言x(?!y)稱為先行否定斷言(Negative look-ahead),x只有不在y前面才匹配,y不會(huì)被計(jì)入返回結(jié)果。
var xreg = /d+(?!%)/g ; xreg.exec("100% is 1"); // ["10"] xreg.exec("100% is 1"); // ["1"] /d+?(?!%)/.exec("100% is 1"); // ["1"]
上面代碼表示匹配不在%前的數(shù)字,xreg中直接書(shū)寫(xiě)的d+ 表示貪婪模式,因此第一次匹配到的是10,第二次才會(huì)匹配到后面的1,因?yàn)樽鳛閿?shù)字10本身也不在%前面,正則不會(huì)將100當(dāng)成一個(gè)整體(注意:這里需要定義一個(gè)正則對(duì)象來(lái)調(diào)用,直接以字面量形式的正則調(diào)用時(shí),每次調(diào)用都是一個(gè)新對(duì)象,結(jié)果始終是10)。
為了一次匹配到最后的1,我們?cè)?b>d+之后加一個(gè)?將其轉(zhuǎn)為非貪婪模式即可。
為了一次匹配到前面100中的1,我們?cè)?b>d+之后加一個(gè)?將其轉(zhuǎn)為非貪婪模式即可。
ES6擴(kuò)展 構(gòu)造函數(shù)ES6之前,JavaScript中不支持后行斷言和否定后行斷言,ES6中添加了對(duì)此的支持,請(qǐng)看之后的ES擴(kuò)展部分。
RegExp構(gòu)造函數(shù)的參數(shù)有兩種情況。
第一種情況是,參數(shù)是字符串,這時(shí)第二個(gè)參數(shù)表示正則表達(dá)式的修飾符(flag)。
第二種情況是,參數(shù)是一個(gè)正則表示式,此時(shí)不能有第二個(gè)參數(shù),會(huì)返回一個(gè)原有正則表達(dá)式的拷貝。
ES6 針對(duì)第二種情況,允許傳入第二個(gè)參數(shù),用于設(shè)置第一個(gè)參數(shù)正則表達(dá)式的修飾符。
var regex = new RegExp(/xyz/, "i"); // ES6之前 語(yǔ)法錯(cuò)誤 new RegExp(/abc/ig, "i"); // ES6中結(jié)果為: /abc/i字符串的正則方法
字符串對(duì)象共有4個(gè)方法,可以使用正則表達(dá)式:match()、replace()、search()和split()。
ES6將這4個(gè)方法,在語(yǔ)言內(nèi)部全部調(diào)用RegExp的實(shí)例方法,從而做到所有與正則相關(guān)的方法,全都定義在RegExp對(duì)象上。
修飾符ES6對(duì)正則表達(dá)式添加了u修飾符,含義為“Unicode模式”,用來(lái)正確處理大于uFFFF的Unicode字符。也就是說(shuō),會(huì)正確處理四個(gè)字節(jié)的UTF-16編碼。
ES6還為正則表達(dá)式添加了y修飾符,叫做“粘連”(sticky)修飾符。
y修飾符的作用與g修飾符類似,也是全局匹配,后一次匹配都從上一次匹配成功的下一個(gè)位置開(kāi)始。不同之處在于,g修飾符只要剩余位置中存在匹配就可,而y修飾符確保匹配必須從剩余的第一個(gè)位置開(kāi)始,這也就是“粘連”的涵義。
var s = "aaa_aa_a"; var r1 = /a+/g; var r2 = /a+/y; // 第一次都能正確匹配 r1.exec(s); // ["aaa"] r2.exec(s); // ["aaa"] // 第二次結(jié)果就不一致了 r1.exec(s); // ["aa"] r2.exec(s); // null
個(gè)人理解,y是類似于在每次匹配時(shí)隱式地添加了^,表示開(kāi)始位置。
屬性ES5中,正則對(duì)象存在source屬性,用于返回正則表達(dá)式本身。
ES6中,又添加了flags屬性,用于返回正則對(duì)象的所有修飾符。
后行斷言后行斷言于先行斷言相反。例如/(?<=y)x/ 表示匹配x,但是要求x必須在y后面。
同理 后行否定斷言則為:/(? 表示匹配x,但是要求x不能在y后面。
參考鏈接需要注意的是,存在后行斷言時(shí),正則執(zhí)行順序發(fā)生了改變,會(huì)先匹配后行斷言的這部分,再匹配其他的的,順序變成了從右向左。因此一些匹配操作的結(jié)果可能大不一致,而且正則中的1-9的引用順序也會(huì)發(fā)生變化。
ES6入門(mén) - 正則表達(dá)式
JavaScript RegExp
正則表達(dá)式30分鐘入門(mén)教程
原文發(fā)表在我的博客JavaScript正則表達(dá)式RegExp,歡迎訪問(wèn)!
錯(cuò)誤修正先行否定斷言中
為了一次匹配到最后的1,我們?cè)?b>d+之后加一個(gè)?將其轉(zhuǎn)為非貪婪模式即可。
為了一次匹配到前面100中的1,我們?cè)?b>d+之后加一個(gè)?將其轉(zhuǎn)為非貪婪模式即可。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82169.html
摘要:構(gòu)造函數(shù)可以有兩個(gè)字符串參數(shù),第一個(gè)參數(shù)包含正則表達(dá)式的主體部分。只讀的布爾值,說(shuō)明這個(gè)正則表達(dá)式是否帶有修飾符。中正則的擴(kuò)展構(gòu)造函數(shù)在中,只能接受字符串作為參數(shù),允許其直接接受正則表達(dá)式作為參數(shù)。 上文傳送門(mén):初探正則表達(dá)式 正則表達(dá)式是一個(gè)描述字符模式的對(duì)象,JavaScript 的 RegExp 類表示正則表達(dá)式,String 和 RegExp 都定義了方法,后者使用正則表達(dá)式進(jìn)...
摘要:選擇分組和引用正則表達(dá)式的語(yǔ)法還包括指定選擇項(xiàng)子表達(dá)式分組和引用前一子表達(dá)式的特殊字符。帶圓括號(hào)的表達(dá)式的另一個(gè)用途是允許在同一正則表達(dá)式的后部引用前面的子表達(dá)式。 正則表達(dá)式(regular expression)是一個(gè)描述字符模式的對(duì)象。JavaScript的 RegExp類 表示正則表達(dá)式,String和RegExp都定義了方法,后者使用正則表達(dá)式進(jìn) 行強(qiáng)大的模式匹配和文本檢索與...
摘要:正則表達(dá)式的字符串表示,按照字面量形式而非傳入構(gòu)造函數(shù)中的字符串模式返回。其中,表示匹配項(xiàng)在字符串中的位置,而表示應(yīng)用正則表達(dá)式的字符串。下面列出了正則表達(dá)式所不支持的特性。關(guān)卡按要求完成下列常用的正則表達(dá)式。 由于本課程的核心是 JavaScript,所以本文著重講解了「正則表達(dá)式」在 JavaScript 中的用法,并未深入「正則表達(dá)式」的具體細(xì)節(jié)。如果您尚不了解「正則表達(dá)式」,強(qiáng)...
摘要:目錄導(dǎo)語(yǔ)理解正則表達(dá)式模式的規(guī)則字符串和正則實(shí)例的屬性和方法檢索實(shí)例小結(jié)導(dǎo)語(yǔ)正則表達(dá)式是處理字符串的一門(mén)藝術(shù)手法,應(yīng)用場(chǎng)景經(jīng)常出現(xiàn)在表單驗(yàn)證部分高級(jí)程序設(shè)計(jì)一書(shū)開(kāi)篇提到,這門(mén)語(yǔ)言最原始的應(yīng)用就是處理輸入驗(yàn)證操作,所以正則表達(dá)式從誕生那一刻就 目錄 導(dǎo)語(yǔ) 1.理解正則表達(dá)式 2.模式的規(guī)則 3.字符串和正則實(shí)例的屬性和方法 4.檢索實(shí)例 5. 小結(jié) 導(dǎo)語(yǔ) 正則表達(dá)式是處理字符串的一門(mén)藝...
摘要:由于某些字符類非常常用,的正則表達(dá)式中,使用特殊轉(zhuǎn)義字符表示他們。多行搜索代碼示例對(duì)象創(chuàng)建對(duì)象可以通過(guò)引用類型創(chuàng)建正則表達(dá)式對(duì)象參數(shù)參數(shù)被稱為模式,可以使任何簡(jiǎn)單或復(fù)雜的正則表達(dá)式,包含字符類限定符分組向前查找以及反向引用等。 概述 正則表達(dá)式是什么 正則表達(dá)式(RegularExpression):由一些普通字符和特殊字符組成的,用以描述一種特定的字符規(guī)則的表達(dá)式。正則表達(dá)式常用在一...
Javascript的正則表達(dá)式是前端中比較重要的部分,正則表達(dá)式主要用于字符串處理,表單驗(yàn)證等場(chǎng)合,實(shí)用高效,文章主要對(duì)JavaScript中的正則的學(xué)習(xí)與總結(jié) 正則表達(dá)式的定義 正則表達(dá)式:是一個(gè)描述字符模式的對(duì)象,JavaScrip中正則表達(dá)式用RegExp對(duì)象表示,可以使用RegExp構(gòu)造函數(shù)來(lái)創(chuàng)建正則對(duì)象 正則表達(dá)式的創(chuàng)建 1.字面量創(chuàng)建 var reg = /[a-z]/; 2.構(gòu)...
閱讀 1538·2023-04-26 02:03
閱讀 4729·2021-11-22 13:53
閱讀 4633·2021-09-09 11:40
閱讀 3801·2021-09-09 09:34
閱讀 2136·2019-08-30 13:18
閱讀 3511·2019-08-30 11:25
閱讀 3305·2019-08-26 14:06
閱讀 2554·2019-08-26 13:52