Nodejs正則表達式函數之match、test、exec、search、split、replace使用詳解

1. Match函數
使用指定的正則表達式函數對字符串驚醒查找,并以數組形式返回符合要求的字符串
原型:stringObj.match(regExp)
參數:
stringObj 必選項,需要去進行匹配的字符串
RegExp 必選項,指定的正則表達式
返回值:如果沒有使用g(全局匹配)選項,則返回第一個匹配的字符串、該字符串所在位置及原始字符串組成的數組,如果使用g選項,則返回所有匹配的字符串組成的數組

//示例1:
var str = “aaabbbcccaaabbbccc”;
var res = str.match(/aaa/); //沒有使用g選項
console.log(res); //輸出[ 'aaa', index: 0, input: 'aaabbbcccaaabbbccc' ] 第一個表示匹配的字符串;第二個表示匹配的字符串坐在的索引位置,從0開始計算;第三個表示原始字符串;
//示例2:
var str = “aaabbbcccaaabbbccc”;
var res = str.match(/aaa/g); //使用g選項,全局匹配
console.log(res); //輸出[ 'aaa', 'aaa' ] 所有匹配的字符串組成的數組

?

2.exec函數
使用指定的正則表達式模式去字符串中查找匹配項,并以數組形式返回,如果未查找到則返回null
原型:regExp.exec(stringObj)
參數:
regExp 必選項,表示指定的正則表達式模式
stringObj 必選項,表示需要查找的字符串
返回值:無論有無g選項,都返回第一個匹配的字符串、該字符串所在位置及原始字符串組成的數組,但是該方法可以返回子匹配項,是match所不能及的

//示例1:
var str = “aaabbbcccaaabbbccc”;
var regExp = /aaa/; //未使用g選項
var res = regExp .exec(str);
console.log(res); //輸出[ 'aaa', index: 0, input: 'aaabbbcccaaabbbccc' ]
//示例2:
var str = “aaabbbcccaaabbbccc”;
var regExp = /aaa/g; //使用g選項
var res = regExp .exec(str);
console.log(res); //輸出[ 'aaa', index: 0, input: 'aaabbbcccaaabbbccc' ]
//示例3:
var str = “aaabbbccc1234aaabbbccc”;
var regExp = /ccc([0-9]+)aaa/;
var res = regExp .exec(str);
console.log(res); //輸出[ 'ccc1234aaa', '1234', index: 6, input: 'aaabbbccc1234aaabbbccc' ] 第一個表示整個正則表達式所匹配的內容;第二個表示()內容的子表達式所匹配的內容;第三個和第四個同上
//示例4:
var str = “aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc”;
var reg = /ccc([0-9]+)aaa/;
var res = reg.exec(str);
console.log(res); //輸出同示例三,因為exec只返回第一個匹配的字符串,如果想全部返回,則需要借助while循環和g參數來實現,如下
var str = “aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc”;
var reg = /ccc([0-9]+)aaa/g;
while(res = reg.exec(str)){
console.log(res);
}
//輸出如下:
[ 'ccc1234aaa', '1234', index: 6, input: 'aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc' ][ 'ccc5678aaa', '5678', index: 28, input: 'aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc' ]
//使用這個方法時切記加上g選項,否則while循環將無法跳出,每次都循環第一個匹配項,導致死循環,可能卡死!

?


3.test函數
原型:regExp.test(str)
參數:regExp表示正則表達式模式 stringObj表示需要進行匹配的字符串
返回值:布爾類型,匹配則返回true,否則false

//示例1:
var str = “aaabbbcccaaabbbccc”;
var reg = /[a-z]+/;
var res = reg.test(str);
console.log(res); //輸出true
//示例2:
var str = “aaabbbcccaaabbbccc”;
var reg = /[0-9]+/;
var res = reg.test(str);
console.log(res); //輸出false
//該函數一般用來檢測某字符串是否符合指定的規則

?

4.search函數
原型:stringObj.search(regExp)
參數:regExp表示正則表達式模式 stringObj表示需要進行匹配的字符串
返回值:返回第一個匹配的字符串所在的位置(偏移量),從0開始

//示例1:
var str = “aaabbbcccaaabbbccc”;
var reg = /ccc/;
var res = str.search(reg);
console.log(res); //輸出 6

5.replace函數

原型:stringObj.replace(regExp, replaceText)
參數:regExp表示正則表達式模式,stringObj表示需要進行匹配的字符串,replaceText表示替換成該文本內容,replaceText也可以是返回字符串的一個函數
返回值:返回替換之后的字符串

//示例1:
var str = “aaabbbcccaaabbbccc”;
var reg = /aaa/;
var res = str.replace(reg, ’111′);
console.log(res);//返回111bbbcccaaabbbccc ,只替換第一個匹配項,若需要替換所有則需要使用g選項

6.split函數

原型:stringObj.split([separator[, limit]])
參數:separator表示分隔符(此處也可以是正則表達式),stringObj表示需要進行匹配的字符串,limit用來限制返回數組元素的個數
返回值:返回分割后的數組

//示例1:
var str = “aaa,bbb,ccc”;
var reg = /,/;
var res = str.split(reg);
console.log(res); //輸出[ 'aaa', 'bbb', 'ccc' ]
//其實這里可以簡單的寫為var res = str.split(“,”);
//示例2:
var str = “aaa,bbb:ccc@ddd#eee”;
var reg = /[,:@#]/;
var res = str.split(reg);
console.log(res); //輸出[ 'aaa', 'bbb', 'ccc', 'ddd', 'eee' ] 這才是用正則的強大之處
//示例3.
var str = “aaa,bbb:ccc@ddd#eee”;
var reg = /[,:@#]/;
var res = str.split(reg, 3);
console.log(res); //輸出[ 'aaa', 'bbb', 'ccc']

轉載于:https://www.cnblogs.com/simadi/p/7091045.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392273.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392273.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392273.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Zabbix 3.0 從入門到精通(zabbix使用詳解)

第1章 zabbix監控 1.1 為什么要監控 在需要的時刻,提前提醒我們服務器出問題了 當出問題之后,可以找到問題的根源 網站/服務器 的可用性 1.1.1 網站可用性 在軟件系統的高可靠性(也稱為可用性,英文描述為HA,High Avail…

python 裝飾器裝飾類_5分鐘的Python裝飾器指南

python 裝飾器裝飾類重點 (Top highlight)There’s no doubt that Python decorators are one of the more advanced and tougher-to-understand programming concepts. This doesn’t mean you should avoid learning them — as you encounter them in production code soone…

php中顏色的索引值,計算PHP中兩種顏色之間的平均顏色,使用索引號作為參考值...

我們假設為了討論的目的,每個顏色都有一個“值”.那么,你想要的就足夠簡單:$index 0.2;$val1 get_value_of_color($color1);$val2 get_value_of_color($color2);$newval $val1 * $index $val2 * (1 - $index);$newcolor get_color_from_value($newval);所以,很…

leetcode 989. 數組形式的整數加法

對于非負整數 X 而言,X 的數組形式是每位數字按從左到右的順序形成的數組。例如,如果 X 1231,那么其數組形式為 [1,2,3,1]。 給定非負整數 X 的數組形式 A,返回整數 XK 的數組形式。 示例 1: 輸入:A […

您需要了解的WordPress漏洞以及如何修復它們

by Joel S. Syder喬爾賽德(Joel S.Syder) 您需要了解的WordPress漏洞以及如何修復它們 (WordPress vulnerabilities you need to know about — and how to fix them) WordPress is an incredibly useful and versatile platform for all kinds of blogging. It’s become ver…

Maven基礎。

---恢復內容開始--- Maven: 1、概念。 * maven 是一個項目管理工具。 * maven的作用。 1、jar包。依賴管理。將jar包放在jar包倉庫(pom.xml),不需要每個項目都添加jar包。 2、測試。 3、項目發布。 2、使用。 * 下載解壓即可。 * 環境變量配置…

Dinosaur Run - Dinosaur world Games

轉載于:https://www.cnblogs.com/hotmanapp/p/7092669.html

機器學習實際應用_機器學習的實際好處是什么?

機器學習實際應用Some of my previous introductory posts to machine learning and data science were a bit technical. However, my purpose of this post is to explain some of the practical use-cases of ML solely from a non-technical savvy layman’s perspective w…

Javascript的setTimeOut()和setInterval()的定時器用法

Javascript用來處理延時和定時任務的setTimeOut和setInterval函數應用非常廣泛,它們都用來處理延時和定時任務,比如打開網頁一段時間后彈出一個登錄框,頁面每隔一段時間發送異步請求獲取最新數據等等。但它們的應用是有區別的。 setTimeout()…

php隨機生成車牌號,生成汽車牌照

用戶隨機50選1。好的車牌用戶選不到。我目前的做法是這樣的。所有車牌入庫。別人選了狀態就修改為1。下面是入庫程序,想跟大家討論一下,有沒有更好的方式。use Illuminate\Database\Seeder;class LicensePlatesTableSeeder extends Seeder{public functi…

Go_ go mod 命令解決墻的問題

簡介 由于眾所周知的原因,在下載一些庫的時候會下載不了,比如 golang.org/x/... 相關的庫。為此,網上出現了很多解決方案。 從 Go1.11 開始,Go 引入了 module,對包進行管理,通過 go mod 命令來進行相關操作…

leetcode 1319. 連通網絡的操作次數(并查集)

用以太網線纜將 n 臺計算機連接成一個網絡,計算機的編號從 0 到 n-1。線纜用 connections 表示,其中 connections[i] [a, b] 連接了計算機 a 和 b。 網絡中的任何一臺計算機都可以通過網絡直接或者間接訪問同一個網絡中其他任意一臺計算機。 給你這個…

MySQL中choose標簽的用法

先給大家來個SQL語句&#xff1a; choose (when,otherwize) ,相當于java 語言中的 switch ,與 jstl 中 的 choose 很類似。 <select id"getMemberInfo" resultType"java.util.Map" parameterType"java.util.Map" > SELECT …

php hsetnx,HSETNX命令_視頻講解_用法示例-redis編程詞典-php中文網

set英 [set] 美 [s?t]vt.設置;放置&#xff0c;安置;使處于某種狀況;擺放餐具vi.落山;出發;凝結n.集合;一套&#xff0c;一副;布景;電視機adj.固定的;位于…的;頑固的;安排好的第三人稱單數&#xff1a; sets 復數&#xff1a; sets 現在分詞&#xff1a; setting 過去式&am…

用導函數的圖像判斷原函數的單調性

前言 典例剖析 例1(給定\(f(x)\)的圖像&#xff0c;確定\(f(x)\)的單調性&#xff0c;最簡單層次) 題目暫略。 例2(用圖像確定\(f(x)\)的正負&#xff0c;確定\(f(x)\)的單調性&#xff0c;2017聊城模擬) 已知函數\(yxf(x)\)的圖像如圖所示(其中\(f(x)\)是函數\(f(x)\)的導函數…

樸素貝葉斯 半樸素貝葉斯_使用樸素貝葉斯和N-Gram的Twitter情緒分析

樸素貝葉斯 半樸素貝葉斯In this article, we’ll show you how to classify a tweet into either positive or negative, using two famous machine learning algorithms: Naive Bayes and N-Gram.在本文中&#xff0c;我們將向您展示如何使用兩種著名的機器學習算法&#xff…

python3:面向對象(多態和繼承、方法重載及模塊)

1、多態 同一個方法在不同的類中最終呈現出不同的效果&#xff0c;即為多態。 class Triangle:def __init__(self,width,height):self.width widthself.height heightdef getArea(self):areaself.width* self.height / 2return areaclass Square:def __init__(self,size):sel…

蠕變斷裂 ansys_如何避免范圍蠕變,以及其他軟件設計課程的辛苦學習方法

蠕變斷裂 ansysby Dror Berel由Dror Berel 如何避免范圍蠕變&#xff0c;以及其他軟件設計課程的辛苦學習方法 (How to avoid scope creep, and other software design lessons learned the hard way) 從數據科學的角度來看。 (From a data-science perspective.) You’ve got…

leetcode 674. 最長連續遞增序列

給定一個未經排序的整數數組&#xff0c;找到最長且 連續遞增的子序列&#xff0c;并返回該序列的長度。 連續遞增的子序列 可以由兩個下標 l 和 r&#xff08;l < r&#xff09;確定&#xff0c;如果對于每個 l < i < r&#xff0c;都有 nums[i] < nums[i 1] &a…

深入單例模式 java,深入單例模式四

Java代碼 privatestaticClass getClass(String classname)throwsClassNotFoundException {ClassLoader classLoader Thread.currentThread().getContextClassLoader();if(classLoader null)classLoader Singleton.class.getClassLoader();return(classLoader.loadClass(class…