四赫编、字符串

字符串

一况木、字符串的屬性

  • 字符串的屬性

    length: 表示字符串的長度

    例如 :

    var str = “howareyou”;
    console.log(str.length);
    console.log(str[0]);  //獲取字符串中對(duì)應(yīng)下標(biāo)的字符
    
  • 注意: ECMAScript 中的字符串是不可變的; 也就是說乃坤,字符串一旦創(chuàng)建,它們的值就不能改變.

    例如:

    var str = “親,包郵哦”;
    str[0] = “唉”; //不會(huì)改變
    

    如果要改變某個(gè)變量保存的字符串弄贿,首先要銷毀原來的字符串春锋,然后再用另一個(gè)包含新值的字符串填充該變量.

    var str = “Hello”;
    str = str+” world!”;
    

二、字符串的方法

字符串的方法(函數(shù))

var str = 'ab';
  • str.charAt(3); 獲取下標(biāo)為3的字符

  • str.charCodeAt(3); 獲取下標(biāo)為3的字符的編碼(ASCII碼)

  • String.fromCharCode(94); ASCII編碼轉(zhuǎn)換成字符

    該方法是String的靜態(tài)方法差凹,所以用String調(diào)用看疙,

    如:var str = String.fromCharCode(98,99); //可傳入多個(gè)參數(shù)

    ASCII(AmericanStandard Code for Information Interchange豆拨,美國標(biāo)準(zhǔn)信息交換代碼)

  • str.concat(); 連接字符串

    例如:

       var str1 = “hello”;
    
           var str2 = str1.concat(“ world”);
    
  • 字符串的查找方法

    str.indexOf(“abc”); 查找字符串第一次出現(xiàn)的位置,如果沒找到則返回-1

    例如:

    var str = "abcdabcd";
    var subStr = “bcd”;
    var index = str.indexOf(subStr); 
    
  • str.lastIndexOf(“abc”); 查找字符串最后一次出現(xiàn)的位置,如果沒找到則返回-1

    例如: var index = str.lastIndexOf(“abc”);

  • str.search(); 正則匹配(返回第一次出現(xiàn)的位置)

    例如:

    var str = ”Abcdabcd";
    var index = str.search(/abc/i);
    

    注: g表示進(jìn)行全局匹配直奋,i表示匹配的時(shí)候忽略大小寫

  • str.replace(); 替換字符串

    例如:

    var str = "how are Are are you!";
    //替換一次
    var newStr = str.replace("are", "old are");
    //替換多次
    var newStr = str.replace(/are/g, "x");
    console.log(newStr)
    

    這里的替換只能執(zhí)行一次能庆,不能夠進(jìn)行全局匹配,如果需要全局匹配脚线,則應(yīng)使用正則表達(dá)式

  • str.substring(start,end); 截取字符串范圍是[start,end)

    例如:

    var str=  "Helloworld!";
    console.log(str.substring(2,5));
    

    注:如果只有一個(gè)參數(shù), 則表示到字符串最后

  • str.split(separator, howmany); 根據(jù)分隔符搁胆、拆分成數(shù)組

    • separator(字符串或正則表達(dá)式)

    • howmany(可以指定返回的數(shù)組的最大長度,可以省略)

      注:如果空字符串(“”)用作separator,那么stringObject中的每個(gè)字符之間都會(huì)被分割。

  • 大小寫轉(zhuǎn)換

    str.toLowerCase();把字符串轉(zhuǎn)換成小寫

    str.toUpperCase();把字符串轉(zhuǎn)換成大寫

三邮绿、Math對(duì)象

  • Math對(duì)象

    Math對(duì)象可以用于執(zhí)行數(shù)學(xué)任務(wù)

  • Math對(duì)象的常用函數(shù):

    • Math.round(3.6) //四舍五入
    • Math.random() //返回0-1之間的隨機(jī)數(shù)
    • Math.max(num1, num2) //返回較大的數(shù)
    • Math.min(num1, num2) //返回較小的數(shù)
    • Math.abs(num) //絕對(duì)值
    • Math.ceil(19.3) //向上取整
    • Math.floor(11.8) //向下取整
    • Math.pow(x,y) //x的y次方
    • Math.sqrt(num) //開平方
    • Math.sin(x)//返回?cái)?shù)的正弦

四渠旁、正則表達(dá)式的概念

1、正則表達(dá)式修飾符

修飾符 可以在全局搜索中不區(qū)分大小寫:

修飾符 描述
i 執(zhí)行對(duì)大小寫不敏感的匹配船逮。
g 執(zhí)行全局匹配(查找所有匹配而非在找到第一個(gè)匹配后停止)顾腊。
m 執(zhí)行多行匹配。

2挖胃、正則表達(dá)式模式

方括號(hào)用于查找某個(gè)范圍內(nèi)的字符:

表達(dá)式 描述
[abc] 查找方括號(hào)之間的任何字符杂靶。
[0-9] 查找任何從 0 至 9 的數(shù)字。
(x|y) 查找任何以 | 分隔的選項(xiàng)酱鸭。

3吗垮、元字符是擁有特殊含義的字符:

元字符 描述
\d 查找數(shù)字。
\D 非數(shù)字
\w 數(shù)字字母下劃線
\W 非數(shù)字字母下劃線
\s 查找空白字符凹髓。
\b 匹配單詞邊界烁登。
\uxxxx 查找以十六進(jìn)制數(shù) xxxx 規(guī)定的 Unicode 字符。

4蔚舀、量詞

量詞 描述
n+ 匹配任何包含至少一個(gè) n 的字符串饵沧。
n* 匹配任何包含零個(gè)或多個(gè) n 的字符串。
n? 匹配任何包含零個(gè)或一個(gè) n 的字符串赌躺。

5狼牺、方法

  • match 方法

    使用正則表達(dá)式模式對(duì)字符串執(zhí)行查找,并將包含查找的結(jié)果作為數(shù)組返回寿谴。
    stringObj.match(rgExp)

    • 參數(shù)
      stringObj
      必選項(xiàng)锁右。對(duì)其進(jìn)行查找的 String 對(duì)象或字符串文字。
      rgExp
      必選項(xiàng)讶泰。為包含正則表達(dá)式模式和可用標(biāo)志的正則表達(dá)式對(duì)象咏瑟。也可以是包含正則表達(dá)式模式和可用標(biāo)志的變量名或字符串文字。
      其余說明與exec一樣痪署,不同的是如果match的表達(dá)式匹配了全局標(biāo)記g將出現(xiàn)所有匹配項(xiàng)码泞,而不用循環(huán),但所有匹配中不會(huì)包含子匹配項(xiàng)狼犯。

    • 實(shí)例

      var str="Hello world!"
      document.write(str.match("world") + "<br />")
      document.write(str.match("World") + "<br />")
      document.write(str.match("worlld") + "<br />")
      document.write(str.match("world!"))
      輸出:
      world
      null
      null
      world!
       
      var str="1 plus 2 equal 3"
      console.log(str.match(/\d+/g)) // [1,2,3]
      
  • exec 方法

    是一個(gè)正則表達(dá)式方法余寥。

    該方法用于檢索字符串中的正則表達(dá)式的匹配领铐。

    該函數(shù)返回一個(gè)數(shù)組,其中存放匹配的結(jié)果宋舷。如果未找到匹配绪撵,則返回值為 null。
    rgExp.exec(str)

    • 實(shí)例
    /e/.exec("The best things in life are free!");
    
  • test 方法

    test() 方法用于檢測(cè)一個(gè)字符串是否匹配某個(gè)模式祝蝠,如果字符串中含有匹配的文本音诈,則返回 true,否則返回 false绎狭。
    rgexp.test(str)

    • 實(shí)例
    var patt = /e/;
    
    patt.test("The best things in life are free!");
    /^1[3-8][0-9]{9}$/.test('15611833906')
    
  • search 方法

    search 方法可使用字符串作為參數(shù)细溅。字符串參數(shù)會(huì)轉(zhuǎn)換為正則表達(dá)式:

    返回與正則表達(dá)式查找內(nèi)容匹配的第一個(gè)子字符串的位置(偏移位)。
    stringObj.search(rgExp)

    • 實(shí)例
    var str="Visit lucky!"
    document.write(str.search(/lucky/i))
    
  • replace 方法

    返回根據(jù)正則表達(dá)式進(jìn)行文字替換后的字符串的復(fù)制儡嘶。
    stringObj.replace(rgExp, replaceText)

    • 實(shí)例

      <p>替換 "microsoft" 為 "Runoob" :</p>
      <button onclick="myFunction()">點(diǎn)我</button>
      <p id="demo">Visit Microsoft!</p>
      <script>
      function myFunction() {
          var str = document.getElementById("demo").innerHTML; 
          var txt = str.replace(/microsoft/i,"Runoob");
          document.getElementById("demo").innerHTML = txt;
      }
      
  • split 方法

    將一個(gè)字符串分割為子字符串喇聊,然后將結(jié)果作為字符串?dāng)?shù)組返回。
    stringObj.split([separator[, limit]])

    • 說明
      split 方法的結(jié)果是一個(gè)字符串?dāng)?shù)組蹦狂,在 stingObj 中每個(gè)出現(xiàn) separator 的位置都要進(jìn)行分解誓篱。separator 不作為任何數(shù)組元素的部分返回。

    • 實(shí)例

      '156118 339\t06'.split(/\s/)
      
  • 正則匹配實(shí)例

//.號(hào)元字符, 代表除了換行之外的所有單個(gè)字符
var pattern = /g..gle/;   //一個(gè)點(diǎn).匹配一個(gè)任意的字符
var str = "goagle";
console.log(pattern.test(str));

//*號(hào)元字符, 配合其他字符使用, 允許其他字符出現(xiàn)任意多次
// 重復(fù)多次匹配, 可以出現(xiàn)任意次, 
var  pattern = /g.*gle/; //.* 匹配0到多個(gè)字符
var  str = "google" 
console.log(pattern.test(str)); 

// [ ] : 表示字符可以出現(xiàn)的范圍
//[a-z]*表示任意0到多個(gè)a-z的字母
var pattern = /g[a-z]*gle/;
var str = "google";
console.log(pattern.test(str));

//非字符:  ^
var pattern = /g[^0-9]*gle/; //可以有任意多個(gè)非0-9的字符
var str = "google";
console.log(pattern.test(str)); 
            
//+ 表示至少出現(xiàn)1次
//[A-Z]+: 至少出現(xiàn)一個(gè)A-Z的字符
var pattern = /[a-z][A-Z]+/;
var str = "gooGle";
console.log(pattern.test(str)); 
            
//使用元符號(hào)匹配
//\w* :匹配任意多個(gè)數(shù)字字母下劃線 , \w : 等價(jià)于[a-zA-Z0-9_] 
var pattern = /g\w*gle/;
var str = "gooA3gle";
console.log(pattern.test(str));

//\d 代表數(shù)字, 等價(jià)于 [0-9]
//\d* 表示任意多個(gè)數(shù)字
var pattern = /g\d*gle/;
var str = "g3243gle";
console.log(pattern.test(str)); 
            
//\D: 匹配非數(shù)字, 相當(dāng)于[^0-9]
var pattern = /g\Dgle/;
var str = "ga3gle";
console.log(pattern.test(str)); 
            
//\D{7,}: 匹配至少7個(gè)非數(shù)字, 相當(dāng)于[^0-9]{7,}
var pattern = /\D{7,}/;
var str = "g3243gle";
console.log(pattern.test(str)); 

/使用錨元字符
// /^ 匹配開始,從頭開始匹配
// $/ 匹配結(jié)尾,從結(jié)尾開始匹配
var pattern = /^google$/;
var str = "google";
console.log(pattern.test(str));
            
// \s 匹配空格
var pattern = /goo\sgle/;
var str = "goo gle";
console.log(pattern.test(str));

//m 多行匹配
var str = "first second\nthird fourth\nfifth sixth";
var patt = /\w+$/gm
var patt = /\w+/gm
console.log(str.match(patt));

正則匹配實(shí)例

/*是否帶有小數(shù)*/
function   isDecimal(strValue )  {  
   var  objRegExp= /^\d+\.\d+$/;
   return  objRegExp.test(strValue);  
}  

/*校驗(yàn)是否中文名稱組成 */
function ischina(str) {
    var reg=/^[\u4E00-\u9FA5]{2,4}$/;   /*定義驗(yàn)證表達(dá)式*/
    return reg.test(str);     /*進(jìn)行驗(yàn)證*/
}

/*校驗(yàn)是否全由8位數(shù)字組成 */
function isStudentNo(str) {
    var reg=/^[0-9]{8}$/;   /*定義驗(yàn)證表達(dá)式*/
    return reg.test(str);     /*進(jìn)行驗(yàn)證*/
}

/*校驗(yàn)電話碼格式 */
function isTelCode(str) {
    var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
    return reg.test(str);
}

/*校驗(yàn)郵件地址是否合法 */
function IsEmail(str) {
    var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
    return reg.test(str);
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鸥咖,一起剝皮案震驚了整個(gè)濱河市燕鸽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌啼辣,老刑警劉巖啊研,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鸥拧,居然都是意外死亡党远,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門富弦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沟娱,“玉大人,你說我怎么就攤上這事腕柜〖盟疲” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵盏缤,是天一觀的道長砰蠢。 經(jīng)常有香客問我,道長唉铜,這世上最難降的妖魔是什么台舱? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮潭流,結(jié)果婚禮上竞惋,老公的妹妹穿的比我還像新娘柜去。我一直安慰自己,他們只是感情好拆宛,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布嗓奢。 她就那樣靜靜地躺著,像睡著了一般胰挑。 火紅的嫁衣襯著肌膚如雪蔓罚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天瞻颂,我揣著相機(jī)與錄音,去河邊找鬼郑象。 笑死贡这,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的厂榛。 我是一名探鬼主播盖矫,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼击奶!你這毒婦竟也來了辈双?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤柜砾,失蹤者是張志新(化名)和其女友劉穎湃望,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體痰驱,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡证芭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了担映。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片废士。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蝇完,靈堂內(nèi)的尸體忽然破棺而出官硝,到底是詐尸還是另有隱情,我是刑警寧澤短蜕,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布氢架,位于F島的核電站,受9級(jí)特大地震影響忿危,放射性物質(zhì)發(fā)生泄漏达箍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一铺厨、第九天 我趴在偏房一處隱蔽的房頂上張望缎玫。 院中可真熱鬧硬纤,春花似錦、人聲如沸赃磨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽邻辉。三九已至溪王,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間值骇,已是汗流浹背莹菱。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吱瘩,地道東北人道伟。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像使碾,于是被迫代替她去往敵國和親蜜徽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容