日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript 正则表达式相关理解

發布時間:2023/12/20 javascript 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript 正则表达式相关理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.使用正則的test、exec方法而且帶有g屬性進行連續匹配的時候, 如果每次匹配之前?lastIndex屬性沒有清零。

<script>var str='123qweQWE125|2q3qw 3aa!*&%#)';var re=new RegExp("2",'g');for(var i=0;i<10;i++){console.log(re.test(str)+' '+re.lastIndex);}</script>

可以看到每次匹配都是從上次匹配結束的位置開始,匹配完后,下次會從頭開始匹配。如果沒有g屬性,則每次都是從頭開始匹配。

2.正則表達式字面量和使用構造函數共享RegExp實例的問題

<script>var re = null,i;for (i=0;i<10;i++){re = /cat/g;console.log(re.test('catastronphe')+" "+re.lastIndex);}for (i=0;i<10;i++){re = new RegExp('cat','g');console.log(re.test('catastronphe')+" "+re.lastIndex);}</script>

高程上說使用正則表達式字面量和使用RegExp構造函數創建的正則表達式不一樣。在ECMAScript 3中,正則表達式字面量始終會共享同一個RegExp實例,而

使用構造函數創建的每一個新RegExp實例都是一個新實例。但是在ECMAScript 5中明確規定,使用正則表達式字面量必須像直接調用RegExp構造函數一樣,

每次都創造新的RegExp實例,所以在chrome上都是一樣的。

3.正則字面量和正則對象在匹配轉義字符時的差別

<script>var str='123qweQWE125|2q3qw 3aa!*&%#)'; // var re=new RegExp("\\s",'g');var re=/\s/g;for(var i=0;i<10;i++){console.log(re.exec(str)+' '+re.lastIndex);}</script>

?代碼中正則字面量和正則對象是等效的,但是正則對象內多了一個‘\’,我理解為正則對象內設置匹配時用雙引號,說明是一個字符串,在使用中字符串會轉換成正則

表達式時會去掉一層轉義字符。

?4.使用匹配子選項

<script>var a='name=yanghaipin';var b= a.match(/^(name)=(.+)/);console.log(b);</script>

使用小括號將子選項包起來,match返回的是一個數組,第一個是完整匹配到的字符串,剩下的分別是匹配到的子選項。

?5.使用(?:)(?=)

<script>var str='windows 10 is great';var a=str.match(/windows (?=\d+)/);var b=str.match(/windows (?:\d+)/);var c=str.match(/windows (\d+)/);alert(a);//windowsalert(b);//windows 10alert(c);//windows 10,10</script>

(?:)和(?=)都會作為匹配校驗,但是前者會出現在匹配到的字符串里面,后者不會出現。

?5. 關于 exec 和 match 方法的區別

http://www.cnblogs.com/withasi/archive/2012/04/23/2466933.html

6 可以使用 $ 來匹配字匹配項

var now = new Date().toLocaleDateString();console.log(now);var regdate=/^(\d{4})[/-](\d{1,2})[/-](\d{1,2})/;console.log(now.match(regdate));console.log(now.replace(regdate,"$1年$2月$3日"));

轉載于:https://www.cnblogs.com/xueandsi/p/5970329.html

總結

以上是生活随笔為你收集整理的JavaScript 正则表达式相关理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。