RegExp對象

正則表達式

正則表達式 Regular Expression 是一種表達文本模式的方法 相似字符串的模板 一般用來按照"給定模式"匹配文本vue


新建正則表達式有兩種方式:
字面量方式 以斜槓表示開始和結束react

var regexp=/abc/;

另外一種是使用RegExp構造函數正則表達式

var regexp=new RegExp('abc');

RegExp構造函數還能夠接受第二個參數,表示修飾符數組

var regex = new RegExp('xyz', 'i');
// 等價於
var regex = /xyz/i;

實例方法

RegExp.prototype.test()

正則實例對象的test方法返回一個布爾值 表示當前模式是否能匹配參數字符串app

/react/.test('react and vue');    //true

上面代碼驗證參數字符串中是否包含react 結果返回true函數

RegExp.prototype.exec()

正則實力對象的exec方法 用來返回匹配結果 若是匹配 則返回一個數組 成員是匹配成功的子字符串 不然返回nullprototype

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開始計數)。code

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方法 下一次搜索的位置從上一次匹配成功結束的位置開始regexp

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修飾符表示多行模式
會修改^和$的行爲

字符串的方法

String.prototype.toLowerCase(),String.prototype.toUpperCase()

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) // 98

String.prototype.indexOf(),String.prototype.lastIndexOf()

indexOf方法用於肯定一個字符串在另外一個字符串中第一次出現的位置,返回結果是匹配開始的位置。若是返回-1,就表示不匹配
indexOf方法還能夠接受第二個參數,表示從該位置開始向後匹配。

'hello world'.indexOf('o', 6) // 7

lastIndexOf方法的用法跟indexOf方法一致,主要的區別是lastIndexOf從尾部開始匹配,indexOf則是從頭部開始匹配。

'hello world'.lastIndexOf('o') // 7

String.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
相關文章
相關標籤/搜索