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