摘要:方法用于從原字符串取出子字符串并返回,不改變原字符串。它的第一個(gè)參數(shù)表示子字符串的開始位置,第二個(gè)位置表示結(jié)束位置返回結(jié)果不含該位置方法按照給定規(guī)則分割字符串,返回一個(gè)由分割出來的子字符串組成的數(shù)組。
正則表達(dá)式
正則表達(dá)式 Regular Expression 是一種表達(dá)文本模式的方法 類似字符串的模板 通常用來按照"給定模式"匹配文本
新建正則表達(dá)式有兩種方式:
字面量方式 以斜杠表示開始和結(jié)束
var regexp=/abc/;
另一種是使用RegExp構(gòu)造函數(shù)
var regexp=new RegExp("abc");
RegExp構(gòu)造函數(shù)還可以接受第二個(gè)參數(shù),表示修飾符
var regex = new RegExp("xyz", "i"); // 等價(jià)于 var regex = /xyz/i;實(shí)例方法 RegExp.prototype.test()
正則實(shí)例對象的test方法返回一個(gè)布爾值 表示當(dāng)前模式是否能匹配參數(shù)字符串
/react/.test("react and vue"); //true
上面代碼驗(yàn)證參數(shù)字符串中是否包含react 結(jié)果返回true
RegExp.prototype.exec()正則實(shí)力對象的exec方法 用來返回匹配結(jié)果 如果匹配 則返回一個(gè)數(shù)組 成員是匹配成功的子字符串 否則返回null
var s="x_y_z"; var r1=/x/; var r2=/a/; var r3=/xy/; r1.exec(s) //[ "x", index: 0, input: "x_y_z" ] r2.exec(s) // null r3.exec(s) // null
exec方法的返回?cái)?shù)組還包含以下兩個(gè)屬性:
input:整個(gè)原字符串。
index:整個(gè)模式匹配成功的開始位置(從0開始計(jì)數(shù))。
var r=/a(b+)a/; var arr=r.exec("_abbba_aba_"); console.log(arr) //["abbba","bbb"] console.log(arr.index) // 1 從字符串的第二個(gè)位置開始匹配成功 console.log(arr.input) //"_abbba_aba_"
如果正則表達(dá)式加上g修飾符 賊可以多次使用exec方法 下一次搜索的位置從上一次匹配成功結(jié)束的位置開始
var reg=/a/g; var str="abc_abc_abc"; var r1=reg.exec(str); console.log(r1); //[ "a", index: 0, input: "abc_abc_abc" ] var r2=reg.exec(str); console.log(r2) // [ "a", index: 4, input: "abc_abc_abc" ] var r3=reg.exec(str); console.log(r3); //[ "a", index: 8, input: "abc_abc_abc" ]匹配規(guī)則 特殊字符
正則表達(dá)式對一些不能打印的特殊字符,提供了表達(dá)方法
n 匹配換行鍵;
r 匹配回車鍵;
t 匹配制表符 ;
v 匹配垂直制表符;
f 匹配換頁符;
0 匹配null字符;
xhh 匹配一個(gè)以兩位十六進(jìn)制數(shù)(x00-xFF)表示的字符;
uhhhh 匹配一個(gè)以四位十六進(jìn)制數(shù)(u0000-uFFFF)表示的 Unicode 字符;
字符類表示有一系列字符可供選擇,只要匹配其中一個(gè)就可以了。所有可供選擇的字符都放在方括號內(nèi)
/[abc]/.test("hello") //false 不包含a、b、c這三個(gè)字母中的任一個(gè),所以返回false /[abc]/.test("apple") //true 包含字母a,所以返回true
脫字符:
如果方括號內(nèi)的第一個(gè)字符是[^],則表示除了字符類之中的字符,其他字符都可以匹配
/[^abc]/.test("hello") //true /[^abc]/.test("bbbc") //false
連字符:
對于連續(xù)序列的字符,連字符(-)用來提供簡寫形式,表示字符的連續(xù)范圍
/a-z/.test("b") // false 連字符不出現(xiàn)在方括號之中,就不具備簡寫的作用,只代表字面的含義,所以不匹配字符b /[a-z]/.test("b") // true重復(fù)類
精確匹配次數(shù),使用大括號({})表示
{n}表示恰好重復(fù)n次,{n,}表示至少重復(fù)n次,{n,m}表示重復(fù)不少于n次,不多于m次
/Ro{2}kie/.test("Rookie") // true 指定o連續(xù)出現(xiàn)2次 /Ro{2,5}kie/.test("Rooookie") // true 指定o連續(xù)出現(xiàn)2次到5次之間
? 問號表示某個(gè)模式出現(xiàn)0次或1次,等同于{0, 1}。 * 星號表示某個(gè)模式出現(xiàn)0次或多次,等同于{0,}。 + 加號表示某個(gè)模式出現(xiàn)1次或多次,等同于{1,}。修飾符
表示模式的附加規(guī)則,放在正則模式的最尾部。
修飾符可以單個(gè)使用,也可以多個(gè)一起使用。
g修飾符:
g修飾符表示全局匹配(global),加上它以后,正則對象將匹配全部符合條件的結(jié)果,主要用于搜索和替換。
var regex = /b/; var str = "abba"; regex.test(str); // true regex.test(str); // true regex.test(str); // true
正則模式不含g修飾符,每次都是從字符串頭部開始匹配。所以,連續(xù)做了三次匹配,都返回true
var regex = /b/g; var str = "abba"; regex.test(str); // true regex.test(str); // true regex.test(str); // false
正則模式含有g(shù)修飾符,每次都是從上一次匹配成功處,開始向后匹配。因?yàn)樽址產(chǎn)bba只有兩個(gè)b,所以前兩次匹配結(jié)果為true,第三次匹配結(jié)果為false
i修飾符:
默認(rèn)情況下,正則對象區(qū)分字母的大小寫,加上i修飾符以后表示忽略大小寫
/abc/.test("ABC") // false /abc/i.test("ABC") // true //加了i修飾符以后,不考慮大小寫,所以模式abc匹配字符串ABC
m修飾符:
m修飾符表示多行模式
會修改^和$的行為
toLowerCase方法用于將一個(gè)字符串全部轉(zhuǎn)為小寫,toUpperCase則是全部轉(zhuǎn)為大寫。它們都返回一個(gè)新字符串,不改變原字符串
"Hello World".toLowerCase() // "hello world" "Hello World".toUpperCase() // "HELLO WORLD"String.prototype.charAt()
charAt方法返回指定位置的字符,參數(shù)是從0開始編號的位置
var s = new String("abc"); s.charAt(1) // "b" s.charAt(s.length - 1) // "c"String.prototype.charCodeAt()
charCodeAt方法返回字符串指定位置的 Unicode 碼
"abc".charCodeAt(1) // 98String.prototype.indexOf(),String.prototype.lastIndexOf()
indexOf方法用于確定一個(gè)字符串在另一個(gè)字符串中第一次出現(xiàn)的位置,返回結(jié)果是匹配開始的位置。如果返回-1,就表示不匹配
indexOf方法還可以接受第二個(gè)參數(shù),表示從該位置開始向后匹配。
"hello world".indexOf("o", 6) // 7
lastIndexOf方法的用法跟indexOf方法一致,主要的區(qū)別是lastIndexOf從尾部開始匹配,indexOf則是從頭部開始匹配。
"hello world".lastIndexOf("o") // 7String.prototype.slice()
slice方法用于從原字符串取出子字符串并返回,不改變原字符串。它的第一個(gè)參數(shù)是子字符串的開始位置,第二個(gè)參數(shù)是子字符串的結(jié)束位置(不含該位置)
"JavaScript".slice(0, 4) // "Java"
如果參數(shù)是負(fù)值,表示從結(jié)尾開始倒數(shù)計(jì)算的位置,即該負(fù)值加上字符串長度
"JavaScript".slice(-6) // "Script"String.prototype.substr()
substr方法用于從原字符串取出子字符串并返回,不改變原字符串,跟slice和substring方法的作用相同。
substr方法的第一個(gè)參數(shù)是子字符串的開始位置(從0開始計(jì)算),第二個(gè)參數(shù)是子字符串的長度。
"JavaScript".substr(4, 6) // "Script"
如果第一個(gè)參數(shù)是負(fù)數(shù),表示倒數(shù)計(jì)算的字符位置。如果第二個(gè)參數(shù)是負(fù)數(shù),將被自動轉(zhuǎn)為0,因此會返回空字符串。
"JavaScript".substr(4, -1) // ""String.prototype.substring()
substring方法用于從原字符串取出子字符串并返回,不改變原字符串,跟slice方法很相像。它的第一個(gè)參數(shù)表示子字符串的開始位置,第二個(gè)位置表示結(jié)束位置(返回結(jié)果不含該位置)
"JavaScript".substring(0, 4) // "Java"String.prototype.split()
split方法按照給定規(guī)則分割字符串,返回一個(gè)由分割出來的子字符串組成的數(shù)組。
"a|b|c".split("|") // ["a", "b", "c"]surprise
讓一個(gè)字符串反轉(zhuǎn)
var str="abcde"; var arr=str.split(""); console.log(arr) //[ "a", "b", "c", "d", "e" ] var arr2=arr.reverse(); console.log(arr2) //[ "e", "d", "c", "b", "a" ] vvar str2=arr.toString(); console.log(str2); //e,d,c,b,a
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/108449.html
摘要:構(gòu)造函數(shù)可以有兩個(gè)字符串參數(shù),第一個(gè)參數(shù)包含正則表達(dá)式的主體部分。只讀的布爾值,說明這個(gè)正則表達(dá)式是否帶有修飾符。中正則的擴(kuò)展構(gòu)造函數(shù)在中,只能接受字符串作為參數(shù),允許其直接接受正則表達(dá)式作為參數(shù)。 上文傳送門:初探正則表達(dá)式 正則表達(dá)式是一個(gè)描述字符模式的對象,JavaScript 的 RegExp 類表示正則表達(dá)式,String 和 RegExp 都定義了方法,后者使用正則表達(dá)式進(jìn)...
摘要:返回值是被找到的值。支持正則表達(dá)式的對象的方法方法檢索與正則表達(dá)式相匹配的子字符串。該數(shù)組是通過在指定的邊界處將字符串分割成子串創(chuàng)建的。注意報(bào)錯(cuò)正確示例附表修飾符修飾符描述執(zhí)行對大小寫不敏感的匹配。查找以十六進(jìn)制數(shù)規(guī)定的字符。 什么是 RegExp? RegExp 是正則表達(dá)式的縮寫。 當(dāng)您檢索某個(gè)文本時(shí),可以使用一種模式來描述要檢索的內(nèi)容。RegExp 就是這種模式。 簡單的模式可以...
摘要:對象對象對象表示正則表達(dá)式,它是對字符串執(zhí)行模式匹配的強(qiáng)大工具。查找以十六進(jìn)制數(shù)規(guī)定的字符。支持正則表達(dá)式的對象的方法方法描述檢索與正則表達(dá)式相匹配的值。替換與正則表達(dá)式匹配的子串。 RegExp對象 RegExp 對象 RegExp 對象表示正則表達(dá)式,它是對字符串執(zhí)行模式匹配的強(qiáng)大工具。 直接量語法 /pattern/attributes 創(chuàng)建 RegExp 對象的語法 new R...
摘要:直接調(diào)用構(gòu)造函數(shù)使用,一個(gè)可能含某種匹配模式的路徑字符串作為它的必選參數(shù),它返回一個(gè)正則對象。有兩個(gè)方法返回一個(gè)正則對象,效果與調(diào)用構(gòu)造函數(shù)一樣返回一個(gè)函數(shù),該函數(shù)與下面的返回的函數(shù)功能一樣方法,同樣接收一個(gè)路徑字符串。 code in here使用path-to-regexp,我們可以在路徑字符串中使用正則。如/:foo*/:bar?、/icon-:foo(d+).png等。像exp...
摘要:返回值一個(gè)新的對象,具有指定的模式和標(biāo)志。參數(shù)作用正則表達(dá)式規(guī)定匹配的類型。如果未找到匹配,則返回值為。返回值請注意,無論是否是全局模式,都會把完整的細(xì)節(jié)添加到它返回的數(shù)組中。字符串或正則表達(dá)式,從該參數(shù)指定的地方分割。 前言 PS:2018/03/27 優(yōu)化文章格式,新增部分測試代碼說起正則其實(shí)大家都會經(jīng)常接觸到,前端小到校驗(yàn),大到插件隨處可見,簡單的方法也能實(shí)現(xiàn)需求,不過缺乏靈活性...
摘要:目錄導(dǎo)語理解正則表達(dá)式模式的規(guī)則字符串和正則實(shí)例的屬性和方法檢索實(shí)例小結(jié)導(dǎo)語正則表達(dá)式是處理字符串的一門藝術(shù)手法,應(yīng)用場景經(jīng)常出現(xiàn)在表單驗(yàn)證部分高級程序設(shè)計(jì)一書開篇提到,這門語言最原始的應(yīng)用就是處理輸入驗(yàn)證操作,所以正則表達(dá)式從誕生那一刻就 目錄 導(dǎo)語 1.理解正則表達(dá)式 2.模式的規(guī)則 3.字符串和正則實(shí)例的屬性和方法 4.檢索實(shí)例 5. 小結(jié) 導(dǎo)語 正則表達(dá)式是處理字符串的一門藝...
閱讀 3263·2021-11-23 09:51
閱讀 1059·2021-08-05 09:58
閱讀 696·2019-08-29 16:05
閱讀 1002·2019-08-28 18:17
閱讀 3060·2019-08-26 14:06
閱讀 2753·2019-08-26 12:20
閱讀 2196·2019-08-26 12:18
閱讀 3091·2019-08-26 11:56