最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript RegExp 正則表達(dá)式對象詳細(xì)說明

 更新時間:2010年12月12日 19:10:04   作者:  
RegExp 對象表示正則表達(dá)式,它是對字符串執(zhí)行模式匹配的強(qiáng)大工具。
直接量語法

/pattern/attributes

創(chuàng)建 RegExp 對象的語法:
復(fù)制代碼 代碼如下:

var obj=new RegExp(pattern,attributes);

事例1:
復(fù)制代碼 代碼如下:

var pattern=/a/;
document.write(pattern.exec("asdas"));

事例2:
復(fù)制代碼 代碼如下:

var obj=new RegExp("a");
document.write(obj.exec("asdas"));


事例1和事例2的執(zhí)行結(jié)果是相同的;
參數(shù)
參數(shù) pattern 是一個字符串,指定了正則表達(dá)式的模式或其他正則表達(dá)式。

參數(shù) attributes 是一個可選的字符串,包含屬性 "g"(執(zhí)行全局匹配查找所有匹配而非在找到第一個匹配后停止。)、"i":執(zhí)行對大小寫不敏感的匹配。 和 "m":執(zhí)行多行匹配。,分別用于指定全局匹配、區(qū)分大小寫的匹配和多行匹配。ECMAScript 標(biāo)準(zhǔn)化之前,不支持 m 屬性。如果 pattern 是正則表達(dá)式,而不是字符串,則必須省略該參數(shù)。

返回值
一個新的 RegExp 對象,具有指定的模式和標(biāo)志。如果參數(shù) pattern 是正則表達(dá)式而不是字符串,那么 RegExp() 構(gòu)造函數(shù)將用與指定的 RegExp 相同的模式和標(biāo)志創(chuàng)建一個新的 RegExp 對象。

如果不用 new 運(yùn)算符,而將 RegExp() 作為函數(shù)調(diào)用,那么它的行為與用 new 運(yùn)算符調(diào)用時一樣,只是當(dāng)pattern 是正則表達(dá)式時,它只返回 pattern,而不再創(chuàng)建一個新的 RegExp 對象。

拋出
SyntaxError - 如果 pattern 不是合法的正則表達(dá)式,或 attributes 含有 "g"、"i" 和 "m" 之外的字符,拋出該異常。

TypeError - 如果 pattern 是 RegExp 對象,但沒有省略 attributes 參數(shù),拋出該異常。
RegExp 對象方法:
1、test():檢索字符串中指定的值。返回 true 或 false。
復(fù)制代碼 代碼如下:

var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free"));

2、exec():檢索字符串中指定的值。返回找到的值,并確定其位置。
復(fù)制代碼 代碼如下:
方法檢索字符串中的指定值。返回值是被找到的值。如果沒有發(fā)現(xiàn)匹配,則返回 null。

3、compile():既可以改變檢索模式,也可以添加或刪除第二個參數(shù)。
復(fù)制代碼 代碼如下:

var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free"));
patt1.compile("d");
document.write(patt1.test("The best things in life are free"));

修飾符:

1、g:執(zhí)行全局匹配查找所有匹配而非在找到第一個匹配后停止;
在使用 "g" 參數(shù)時,exec() 的工作原理如下:
找到第一個 "e",并存儲其位置
如果再次運(yùn)行 exec(),則從存儲的位置開始檢索,并找到下一個 "e",并存儲其位置
復(fù)制代碼 代碼如下:

var patt1=new RegExp("e","g");
do
{
result=patt1.exec("The best things in life are free");
document.write(result);
}
while (result!=null)

RegExp 對象屬性
1:global:RegExp 對象是否具有標(biāo)志 g。
2:ignoreCase:RegExp 對象是否具有標(biāo)志 i。
3:lastIndex:一個整數(shù),標(biāo)示開始下一次匹配的字符起始位置。
4:multiline:RegExp 對象是否具有標(biāo)志 m;
5:source:正則表達(dá)式的源文本。

復(fù)制代碼 代碼如下:

var obj=new RegExp(/s/);
document.write(obj.source);

支持正則表達(dá)式的 String 對象的方法
1:search() 方法用于檢索字符串中指定的子字符串,或檢索與正則表達(dá)式相匹配的子字符串。
忽略大小寫事例:
復(fù)制代碼 代碼如下:

<script type="text/javascript">
var str="Visit W3School!"
document.write(str.search(/w3school/i))
</script>

返回值

stringObject 中第一個與 regexp 相匹配的子串的起始位置。

注釋:如果沒有找到任何匹配的子串,則返回 -1。

說明

search() 方法不執(zhí)行全局匹配,它將忽略標(biāo)志 g。它同時忽略 regexp 的 lastIndex 屬性,并且總是從字符串的開始進(jìn)行檢索,這意味著它總是返回 stringObject 的第一個匹配的位置。

 

2:match() 方法可在字符串內(nèi)檢索指定的值,或找到一個或多個正則表達(dá)式的匹配。該方法類似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

返回值

存放匹配結(jié)果的數(shù)組。該數(shù)組的內(nèi)容依賴于 regexp 是否具有全局標(biāo)志 g。

說明

match() 方法將檢索字符串 stringObject,以找到一個或多個與 regexp 匹配的文本。這個方法的行為在很大程度上有賴于 regexp 是否具有標(biāo)志 g。

如果 regexp 沒有標(biāo)志 g,那么 match() 方法就只能在 stringObject 中執(zhí)行一次匹配。如果沒有找到任何匹配的文本, match() 將返回 null。否則,它將返回一個數(shù)組,其中存放了與它找到的匹配文本有關(guān)的信息。該數(shù)組的第 0 個元素存放的是匹配文本,而其余的元素存放的是與正則表達(dá)式的子表達(dá)式匹配的文本。除了這些常規(guī)的數(shù)組元素之外,返回的數(shù)組還含有兩個對象屬性。index 屬性聲明的是匹配文本的起始字符在 stringObject 中的位置,input 屬性聲明的是對 stringObject 的引用。

如果 regexp 具有標(biāo)志 g,則 match() 方法將執(zhí)行全局檢索,找到 stringObject 中的所有匹配子字符串。若沒有找到任何匹配的子串,則返回 null。如果找到了一個或多個匹配子串,則返回一個數(shù)組。不過全局匹配返回的數(shù)組的內(nèi)容與前者大不相同,它的數(shù)組元素中存放的是 stringObject 中所有的匹配子串,而且也沒有 index 屬性或 input 屬性。

注意:在全局檢索模式下,match() 即不提供與子表達(dá)式匹配的文本的信息,也不聲明每個匹配子串的位置。如果您需要這些全局檢索的信息,可以使用 RegExp.exec()。

參數(shù)為字符串的事例:

復(fù)制代碼 代碼如下:

var str="Hello world!"
document.write(str.match("world") + "<br />")

參數(shù)為正則表達(dá)式的事例:
復(fù)制代碼 代碼如下:

var str="1 plus 2 equal 3"
document.write(str.match(/\d+/g))

3:replace() 方法用于在字符串中用一些字符替換另一些字符,或替換一個與正則表達(dá)式匹配的子串。

stringObject.replace(regexp/substr,replacement)
參數(shù)描述
regexp/substr

必需。規(guī)定子字符串或要替換的模式的 RegExp 對象。

請注意,如果該值是一個字符串,則將它作為要檢索的直接量文本模式,而不是首先被轉(zhuǎn)換為 RegExp 對象。

replacement必需。一個字符串值。規(guī)定了替換文本或生成替換文本的函數(shù)。

返回值

一個新的字符串,是用 replacement 替換了 regexp 的第一次匹配或所有匹配之后得到的。

說明

字符串 stringObject 的 replace() 方法執(zhí)行的是查找并替換的操作。它將在 stringObject 中查找與 regexp 相匹配的子字符串,然后用 replacement 來替換這些子串。如果 regexp 具有全局標(biāo)志 g,那么 replace() 方法將替換所有匹配的子串。否則,它只替換第一個匹配子串。

replacement 可以是字符串,也可以是函數(shù)。如果它是字符串,那么每個匹配都將由字符串替換。但是 replacement 中的 $ 字符具有特定的含義。如下表所示,它說明從模式匹配得到的字符串將用于替換。

字符替換文本
$1、$2、...、$99與 regexp 中的第 1 到第 99 個子表達(dá)式相匹配的文本。
$&與 regexp 相匹配的子串。
$`位于匹配子串左側(cè)的文本。
$'位于匹配子串右側(cè)的文本。
$$直接量符號。

注意:ECMAScript v3 規(guī)定,replace() 方法的參數(shù) replacement 可以是函數(shù)而不是字符串。在這種情況下,每個匹配都調(diào)用該函數(shù),它返回的字符串將作為替換文本使用。該函數(shù)的第一個參數(shù)是匹配模式的字符串。接下來的參數(shù)是與模式中的子表達(dá)式匹配的字符串,可以有 0 個或多個這樣的參數(shù)。接下來的參數(shù)是一個整數(shù),聲明了匹配在 stringObject 中出現(xiàn)的位置。最后一個參數(shù)是 stringObject 本身。

字符串替換:
復(fù)制代碼 代碼如下:

var str="Visit Microsoft!"
document.write(str.replace(/Microsoft/, "W3School"))

全局替換:
復(fù)制代碼 代碼如下:

var str="Welcome to Microsoft! "
str=str + "We are proud to announce that Microsoft has "
str=str + "one of the largest Web Developers sites in the world."
document.write(str.replace(/Microsoft/g, "W3School"))

返回的結(jié)果:Welcome to W3School! We are proud to announce that W3Schoolhas one of the largest Web Developers sites in the world.使用正則表達(dá)式:
復(fù)制代碼 代碼如下:

name = '"a", "b"';
name.replace(/"([^"]*)"/g, "'$1'");

使用函數(shù):
復(fù)制代碼 代碼如下:

name = 'aaa bbb ccc';
uw=name.replace(/\b\w+\b/g, function(word){
return word.substring(0,1).toUpperCase()+word.substring(1);}
);

4:split() 方法用于把一個字符串分割成字符串?dāng)?shù)組。

語法

stringObject.split(separator,howmany)

參數(shù)描述
separator必需。字符串或正則表達(dá)式,從該參數(shù)指定的地方分割 stringObject。
howmany可選。該參數(shù)可指定返回的數(shù)組的最大長度。如果設(shè)置了該參數(shù),返回的子串不會多于這個參數(shù)指定的數(shù)組。如果沒有設(shè)置該參數(shù),整個字符串都會被分割,不考慮它的長度。

返回值


一個字符串?dāng)?shù)組。該數(shù)組是通過在 separator 指定的邊界處將字符串 stringObject 分割成子串創(chuàng)建的。返回的數(shù)組中的字串不包括 separator 自身。


但是,如果 separator 是包含子表達(dá)式的正則表達(dá)式,那么返回的數(shù)組中包括與這些子表達(dá)式匹配的字串(但不包括與整個正則表達(dá)式匹配的文本)。




提示和注釋


注釋:如果把空字符串 ("") 用作 separator,那么 stringObject 中的每個字符之間都會被分割。


注釋:String.split() 執(zhí)行的操作與 Array.join 執(zhí)行的操作是相反的。



修飾符


修飾符描述
i執(zhí)行對大小寫不敏感的匹配。
g執(zhí)行全局匹配(查找所有匹配而非在找到第一個匹配后停止)。
m執(zhí)行多行匹配。



方括號


方括號用于查找某個范圍內(nèi)的字符:


表達(dá)式描述
[abc]查找方括號之間的任何字符。
[^abc]查找任何不在方括號之間的字符。
[0-9]查找任何從 0 至 9 的數(shù)字。
[a-z]查找任何從小寫 a 到小寫 z 的字符。
[A-Z]查找任何從大寫 A 到大寫 Z 的字符。
[a-Z]查找任何從小寫 a 到大寫 Z 的字符。
[adgk]查找給定集合內(nèi)的任何字符。
[^adgk]查找給定集合外的任何字符。
[red|blue|green]查找任何指定的選項(xiàng)。



元字符


元字符(Metacharacter)是擁有特殊含義的字符:


元字符描述
.查找單個字符,除了換行和行結(jié)束符。
\w查找單詞字符。
\W查找非單詞字符。
\d查找數(shù)字。
\D查找非數(shù)字字符。
\s查找空白字符。
\S查找非空白字符。
\b查找位于單詞的開頭或結(jié)尾的匹配。
\B查找不處在單詞的開頭或結(jié)尾的匹配。
\0查找 NUL 字符。
\n查找換行符。
\f查找換頁符。
\r查找回車符。
\t查找制表符。
\v查找垂直制表符。
\xxx查找以八進(jìn)制數(shù) xxx 規(guī)定的字符。
\xdd查找以十六進(jìn)制數(shù) dd 規(guī)定的字符。
\uxxxx查找以十六進(jìn)制數(shù) xxxx 規(guī)定的 Unicode 字符。



量詞


量詞描述
n+匹配任何包含至少一個 n 的字符串。
n*匹配任何包含零個或多個 n 的字符串。
n?匹配任何包含零個或一個 n 的字符串。
n{X}匹配包含 X 個 n 的序列的字符串。
n{X,Y}匹配包含 X 或 Y 個 n 的序列的字符串。
n{X,}匹配包含至少 X 個 n 的序列的字符串。
n$匹配任何結(jié)尾為 n 的字符串。
^n匹配任何開頭為 n 的字符串。
?=n匹配任何其后緊接指定字符串 n 的字符串。
?!n匹配任何其后沒有緊接指定字符串 n 的字符串。
JavaScript RegExp 對象參考手冊

相關(guān)文章

  • 正則入門連載?。ǐI(xiàn)給不及格的程序員們)

    正則入門連載?。ǐI(xiàn)給不及格的程序員們)

    正則入門連載?。ǐI(xiàn)給不及格的程序員們)...
    2007-02-02
  • 正則表達(dá)式檢測用戶輸入的email地址是否合法

    正則表達(dá)式檢測用戶輸入的email地址是否合法

    在注冊系統(tǒng)開發(fā)中,需要檢測用戶輸入的email地址是否合法,都可以使用正則表達(dá)式來檢測,下面有個小例子,希望對大家有所幫助
    2014-01-01
  • php正則表達(dá)式中貪婪與非貪婪介紹

    php正則表達(dá)式中貪婪與非貪婪介紹

    什么叫貪婪,比如說要從字符串中td面包一td td面包二td吃面包,本來你只可以吃面包一,可是你貪心,于是就把第一個td到最后一個td里面的兩個面包取出來了,你想多吃點(diǎn),非貪婪也就是你不貪吃了,就只吃面包一
    2016-03-03
  • 正則表達(dá)式中環(huán)視的簡單應(yīng)用示例【基于java】

    正則表達(dá)式中環(huán)視的簡單應(yīng)用示例【基于java】

    這篇文章主要介紹了正則表達(dá)式中環(huán)視的簡單應(yīng)用,簡單分析了環(huán)視的概念與功能,并基于java給出了正則表達(dá)式環(huán)視的具體使用技巧,需要的朋友可以參考下
    2017-04-04
  • 使用正則表達(dá)式從鏈接中獲取圖片名稱

    使用正則表達(dá)式從鏈接中獲取圖片名稱

    正則表達(dá)式有時可用來判斷是否包含某些數(shù)據(jù),有時可用來獲取匹配數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于使用正則表達(dá)式從鏈接中獲取圖片名稱的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • JS 正則 時間驗(yàn)證

    JS 正則 時間驗(yàn)證

    JS 正則 時間驗(yàn)證代碼,需要的朋友可以參考下。
    2009-11-11
  • 深入理解正則表達(dá)式中的?test?和?/[^A-Za-z0-9]/??(推薦)

    深入理解正則表達(dá)式中的?test?和?/[^A-Za-z0-9]/??(推薦)

    正則表達(dá)式(RegEx)是?JavaScript?中處理字符串的利器,能夠?qū)崿F(xiàn)模式匹配、提取和替換等多種功能,本文將詳細(xì)介紹正則表達(dá)式的test方法及其與?/[^A-Za-z0-9]/?的結(jié)合使用,幫助你快速掌握這些工具在實(shí)際開發(fā)中的應(yīng)用,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • 精確查找PHP WEBSHELL木馬 修正版

    精確查找PHP WEBSHELL木馬 修正版

    上篇提到了關(guān)于網(wǎng)上流傳查找PHP webshell的python腳本中,不嚴(yán)謹(jǐn)?shù)拇a,并且給出了一個python的檢測代碼,同時,下文里也提到不能檢測到反引號的命令執(zhí)行的地方。今天,我想了下,現(xiàn)在把思路發(fā)出來。
    2011-04-04
  • 8個你應(yīng)該了解的正則表達(dá)式提高你的工作效率

    8個你應(yīng)該了解的正則表達(dá)式提高你的工作效率

    正則表達(dá)式也可以被當(dāng)作是一門語言,入門時可能很吃力,不過一旦學(xué)會了就方便很多,在處理一些比較復(fù)雜的替換時,正則表達(dá)式就會發(fā)揮它的真正作用,本文整理了一些常用的正則,感興趣的朋友可以了解下,或許對你有所幫助
    2013-01-01
  • 用正則表達(dá)式格式化html標(biāo)簽的代碼

    用正則表達(dá)式格式化html標(biāo)簽的代碼

    用正則表達(dá)式格式化html標(biāo)簽的代碼...
    2007-02-02

最新評論

侯马市| 益阳市| 秀山| 卫辉市| 中阳县| 萨嘎县| 咸阳市| 巩义市| 景东| 涟水县| 巴南区| 西贡区| 曲靖市| 光泽县| 襄樊市| 册亨县| 长白| 秭归县| 清远市| 康乐县| 静安区| 延寿县| 宁安市| 栾城县| 尼玛县| 许昌县| 平果县| 海城市| 平阳县| 金沙县| 固始县| 旬阳县| 江都市| 宣汉县| 鸡东县| 宁明县| 商丘市| 清河县| 桐梓县| 吉木萨尔县| 乐至县|