Js基礎知識3-字串、正規表示式全解

笠航發表於2018-09-08

字串的生成轉換

你可以將任何型別的資料都轉換為字串,你可以用下面三種方法的任何一種:

1 var num= 19;                    // 19
2 var myStr = num.toString();     // "19"
3 var myStr = String(num);        // "19"
4 var myStr = "" +num;            // "19"

字串轉化為其他型別

js提供了parseInt()和parseFloat()兩個轉換函式,Number也可以實現轉化

 1 parseInt("1234blue");   //returns 1234 
 2 parseInt("0xA");        //returns 10 
 3 parseInt("22.5");       //returns 22 
 4 parseInt("blue");       //returns NaN
 5 parseInt("10", 2);      //returns 2 
 6 parseInt("10", 8);      //returns 8 
 7 parseInt("10", 10);     //returns 10
 8 parseInt("AF", 16);     //returns 175 
 9 parseFloat("1234blue"); //returns 1234.0 
10 parseFloat("0xA");      //returns NaN 
11 parseFloat("22.5");     //returns 22.5 
12 parseFloat("22.34.5");  //returns 22.34 
13 parseFloat("0908");     //returns 908 
14 parseFloat("blue");     //returns NaN
15 Number(false)           //0 
16 Number(true)            //1 
17 Number(undefined)       //NaN 
18 Number(null)            //0 
19 Number( "5.5 ")         //5.5 
20 Number( "56 ")          //56 
21 Number( "5.6.7 ")       //NaN 
22 Number(new Object())    //NaN 
23 Number(100)             //100

字元的操作

1 var myStr = "I,love,you,Do,you,love,me";
2 var theChar = str.charAt(8);                //獲取指定索引上的字元o
3 var theCharcode = myStr.charCodeAt(8);      //獲取指定索引上的字元編碼 111

字串增刪查改

 1 //替換
 2 name = " Muaneng Tuanpeng ".trim();             //trim()刪除字串前後空格
 3 name =name.replace("eng","ing");                //replace替換第一個eng成ing。
 4 name =name.replace(/eng/g,"ing");               //replace接收正規表示式,/g替換全部。
 5 
 6 //查詢
 7 var beginindex=name.indexOf("t",name.length-10);//indexOf和lastindexOf查詢子字串的位置,第二個參數列示從哪個索引開始向對面搜尋。length函式表示取字串的長度。未查詢到時返回-1。
 8 var endindex = name.lastIndexOf("g",0);
 9 
10 //擷取
11 var subStr = name.slice(1,5);                   //讀取子字串,起始下標(包含),結束下標(不包含)
12 name1 = name.substring(beginindex,endindex);    //slice、substring引數為首尾下標,substr為起點下標和長度。都不改變源字串。
13 name1 = name.substr(-4);                        //傳入負值時,slice將負值加上字串長度,substr將第一個負值加上字串長度,第二個負值轉為0,substring將負值都轉為0
14 
15 //拼接
16 name1 = name+"Yes"+1;                           //使用+號拼接字串和資料成一個新的字串
17 name1 = name.concat("yes");                     //也可以使用concat函式拼接字串
18 
19 //大小寫轉換
20 var lowCaseStr = name.toLowerCase();            //全部轉換為小寫
21 var upCaseStr = name.toUpperCase();             //全部轉化為大寫

字串比較 
比較兩個字串,比較是規則是按照字母表順序比較的

var myStr = "chicken";
var myStrTwo = "egg";
var first = myStr.localeCompare(myStrTwo);      // -1,表示小於
first = myStr.localeCompare("chicken");         // 0,表示等於
first = myStr.localeCompare("apple");           // 1,表示大於

字串分割

var myStr = "I,Love,You,Do,you,love,me";
var substrArray = myStr .split(",");            // ["I", "Love", "You", "Do", "you", "love", "me"];
var arrayLimited = myStr .split(",", 3)[0];     // split()的第二個引數,表示返回的字串陣列的最大長度。這裡取["I", "Love", "You"]陣列的第一個元素,即"I";

正則法則 
正規表示式 = /pattern/flags 其中flags中g表示匹配全部,i表示不區分大小寫,m表示匹配多行。 
pattern包含 ([{^$|)?*+.]}元字元,若匹配的字串中包含元字元,使用轉義。

var patter1 = /(.)u/gi;                 //正規表示式,標誌沒有,可為空,也可以使用var patter1 = new RegExp("pattern","flags"),使用new是建立物件
if(patter1.test(name)){                 //test查詢符合要求的子串是否存在,返回true
    RegExp.input;               //原始字串
    RegExp.leftContext;         //捕捉到的位置的左邊字串
    RegExp.rightContext;        //捕捉到的位置的右邊字串
    RegExp.lastMatch;           //返回最近一次與整個正規表示式匹配的字串 mu
    RegExp.lastParen;           //返回最近一次捕捉的字元
    patter1.global;             //返回正則是否包含全域性標誌g
}
var matches = patter1.exec(name);       //查詢符合要求的子串。matches.index表示查詢到的起始下標,matches.input表示輸入字串。patter1.lastIndex表示查詢到的結束下標,matches[0]表示查詢到的第一個匹配項,若匹配項為全域性模式,則每次呼叫返回下一個匹配項。

正規表示式字元

 做為轉義,即通常在""後面的字元不按原來意義解釋,如/b/匹配字元"b",當b前面加了反斜杆後//,轉意為匹配一個單詞的邊界。 
-或- 
對正規表示式功能字元的還原,如"*"匹配它前面元字元0次或多次,/a*/將匹配a,aa,aaa,加了""後,/a*/將只匹配"a*"。 

^ 匹配一個輸入或一行的開頭,/^a/匹配"an A",而不匹配"An a" 
$ 匹配一個輸入或一行的結尾,/a$/匹配"An a",而不匹配"an A" 
* 匹配前面元字元0次或多次,/ba*/將匹配b,ba,baa,baaa 
+ 匹配前面元字元1次或多次,/ba*/將匹配ba,baa,baaa 
? 匹配前面元字元0次或1次,/ba*/將匹配b,ba 
(x) 匹配x儲存x在名為$1...$9的變數中 
x|y 匹配x或y 
{n} 精確匹配n次 
{n,} 匹配n次以上 
{n,m} 匹配n-m次 
[xyz] 字符集(character set),匹配這個集合中的任一一個字元(或元字元) 
[^xyz] 不匹配這個集合中的任何一個字元 
[] 匹配一個退格符 
 匹配一個單詞的邊界 
B 匹配一個單詞的非邊界 
cX 這兒,X是一個控制符,/cM/匹配Ctrl-M 
d 匹配一個字數字符,/d/ = /[0-9]/ 
D 匹配一個非字數字符,/D/ = /[^0-9]/ 

 匹配一個換行符 

 匹配一個回車符 
s 匹配一個空白字元,包括
,
,f,	,v等 
S 匹配一個非空白字元,等於/[^
f
	v]/ 
	 匹配一個製表符 
v 匹配一個重直製表符 
w 匹配一個可以組成單詞的字元(alphanumeric,這是我的意譯,含數字),包括下劃線,如[w]匹配"$5.98"中的5,等於[a-zA-Z0-9] 
W 匹配一個不可以組成單詞的字元,如[W]匹配"$5.98"中的$,等於[^a-zA-Z0-9]。

字串原型 
通過修改字串的原型,可以為所有字串新增公共函式。

1 String.prototype.startwith = function(text){    //設定字串引用的原型,為String型別變數新增方法
2     return this.indexOf(text)==0;
3 };
4 var begin = name.startwith("mu");               //呼叫原型方法

 

相關文章