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

JavaScript 正則表達(dá)式與字符串查找方法

 更新時間:2018年07月23日 10:02:54   作者:小船劃向前端  
今天小編就為大家分享一篇JavaScript 正則表達(dá)式與字符串查找方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

首先提出一個問題:

如何取得一個給定的字符串substr在另一個字符串str中出現(xiàn)的次數(shù)?

字符串匹配,第一想到的就是正則表達(dá)式,但我們最常使用的字面量來創(chuàng)建的正則表達(dá)式方式卻無法傳入變量,

這時應(yīng)該使用另一種創(chuàng)建正則表達(dá)式的方式:構(gòu)造函數(shù),如下

var reg = new RegExp(substr, "g");

其中第一個參數(shù)表示要匹配的字符串模式,因此可以傳入變量,不需要加/ /,第二個參數(shù)是可選的標(biāo)志字符串。

可以傳入變量了,再介紹個字符串基本包裝類型的方法:match()

語法為str.match(regExp),參數(shù)為一個正則表達(dá)式,若傳的不是正則則會隱式轉(zhuǎn)換,返回值為一個包含匹配結(jié)果的數(shù)組,如果沒有匹配項,則返回null。

另外,字符串的match方法與正則的exec()類似,返回匹配的詳細(xì)信息;字符串的search方法與正則的test()類似,只是用來查看是否匹配。

回到最初的問題,完整的程序如下:

var str1 = "abctestctesqk1test23";
var str2 = "test";
 
function countSubstr(str, substr) {
  var reg = new RegExp(substr, "g");
  return str.match(reg) ? str.match(reg).length : 0;//若match返回不為null,則結(jié)果為true,輸出match返回的數(shù)組(["test","test"])的長度
}
console.log(countSubstr(str1, str2));//輸出2

另外,對于變量的問題,不使用構(gòu)造函數(shù)也可以解決,即使用eval():

var reg = "/" + substr + "/g";
reg = eval(reg);//不推薦!

但都知道不推薦使用eval()方法,所以還是推薦使用構(gòu)造函數(shù)方法。

但還是有個問題,如果子字符串中含有正則表達(dá)式中所謂的元字符(即+*?^等),則無法正常匹配。

因為此時正則表達(dá)式是在字符串里的,\是字符串中的轉(zhuǎn)義符,也是正則表達(dá)式中的轉(zhuǎn)義符。那么只加一個\的話,只能說明在字符串中轉(zhuǎn)義,而js需要進(jìn)一步把普通字符串中的\變成正則表達(dá)式中的\,像是更深一則轉(zhuǎn)化的意思,稱為雙重轉(zhuǎn)義,這樣\\以后的意思是正則表達(dá)式中的轉(zhuǎn)義符(\)。

所以對于那些元字符如果不進(jìn)行雙重轉(zhuǎn)義,則無法真正查找要找的那個字符。這個問題尚未解決,不過一般字符串查找也很少有這些特殊字符吧,可以先一用。

以上這篇JavaScript 正則表達(dá)式與字符串查找方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解正則表達(dá)式 \v 元字符

    詳解正則表達(dá)式 \v 元字符

    正則表達(dá)式是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”)。模式描述在搜索文本時要匹配的一個或多個字符串。\v元字符可以匹配垂直制表符。下面給大家介紹正則表達(dá)式 \v 元字符,感興趣的朋友一起看看吧
    2018-01-01
  • linux grep正則表達(dá)式與grep用法詳解

    linux grep正則表達(dá)式與grep用法詳解

    在此首先大家要牢記:正則表達(dá)式與通配符不一樣,它們表示的含義并不相同。正則表達(dá)式應(yīng)用非常廣泛,但是大家很少有過整理吧,下面腳本之家的小編整理了關(guān)于正則表達(dá)式的描述,還比較詳細(xì),在此分享給大家,感興趣的朋友可以參考下。
    2015-09-09
  • 正則表達(dá)式教程之前后查找lookaround詳解

    正則表達(dá)式教程之前后查找lookaround詳解

    這篇文章主要介紹了正則表達(dá)式教程之前后查找lookaround,結(jié)合具體問題分析了向前查找及向后查找功能的實現(xiàn)技巧與注意事項,需要的朋友可以參考下
    2017-01-01
  • JS中正則表達(dá)式全局匹配正斜杠的方法

    JS中正則表達(dá)式全局匹配正斜杠的方法

    這篇文章主要介紹了JS中正則表達(dá)式全局匹配正斜杠的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • editplus EmEditor和searchandreplace正則表達(dá)式

    editplus EmEditor和searchandreplace正則表達(dá)式

    掌握下面的正則方便我們快速的批量處理文本替換。
    2009-07-07
  • 如何使用正則去掉html中標(biāo)簽與標(biāo)簽之間的空格

    如何使用正則去掉html中標(biāo)簽與標(biāo)簽之間的空格

    文章介紹了如何使用正則表達(dá)式去除HTML標(biāo)簽之間多余的空格,包括處理多個空格、換行符、排除<pre>標(biāo)簽內(nèi)的空格以及處理標(biāo)簽內(nèi)的空格,提供了三種JavaScript正則表達(dá)式解決方案,并解釋了它們的優(yōu)缺點,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • 正則表達(dá)式中最短匹配模式的用法淺析

    正則表達(dá)式中最短匹配模式的用法淺析

    最短匹配應(yīng)用于:假如有一段文本,你只想匹配最短的可能,而不是最長。下面這篇文章主要給大家介紹了關(guān)于正則表達(dá)式中最短匹配模式用法的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • ubb js

    ubb js

    ubb js...
    2006-06-06
  • Android中手機(jī)號、車牌號正則表達(dá)式大全

    Android中手機(jī)號、車牌號正則表達(dá)式大全

    這篇文章主要介紹了Android中手機(jī)號、車牌號正則表達(dá)式的相關(guān)資料,需要的朋友可以參考下
    2015-09-09
  • js正則匹配markdown里的圖片標(biāo)簽的實現(xiàn)

    js正則匹配markdown里的圖片標(biāo)簽的實現(xiàn)

    這篇文章主要介紹了js正則匹配markdown里的圖片標(biāo)簽的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論

安丘市| 祁门县| 栾城县| 蓝田县| 怀远县| 锦屏县| 个旧市| 彰化县| 手机| 杭锦后旗| 芜湖市| 曲沃县| 卓资县| 江永县| 普格县| 抚州市| 巴林左旗| 新龙县| 潮安县| 靖安县| 繁昌县| 林周县| 古交市| 定结县| 靖江市| 东兰县| 抚顺市| 九龙县| 台湾省| 如东县| 榆林市| 吉林省| 忻城县| 尖扎县| 延川县| 蓬莱市| 杭州市| 土默特左旗| 东乌珠穆沁旗| 渝北区| 静宁县|