一、字元串操作包括哪些? search 查找 <script> var str='abcdefd'; alert(str.search('a')); //返回0,從0開始 alert(str.search('bc')); //返回1,這個1是bc出現的位置,search只找第一次出現的位置 aler ...
一、字元串操作包括哪些?
search 查找
<script> var str='abcdefd'; alert(str.search('a')); //返回0,從0開始 alert(str.search('bc')); //返回1,這個1是bc出現的位置,search只找第一次出現的位置 alert(str.search('g')); //返回要查找的字元串第一次出現的位置,沒有返回-1 </script>
substring 獲取子字元串
<script> var str='abcdef'; alert(str.substring(1, 4)); //substring有兩個參數,起始位置和結束位置,這裡返回bcd(不是bcde),不包括結束位置的字母 // alert(str.substring(1)); 只給第一個參數時,一直取到字元串結束,返回bcdef </script>
charAt 獲取某個字元
<script> var str='abcdef'; alert(str.charAt(2)); //取第2個位置上的字元,返回c </script>
split 分割字元串,獲得數組;
<script> var str='abc-12-u-qw'; var arr=str.split('-'); //- 用引號包裹 alert(arr); //返回一個數組,abc,12,u,qw alert(arr[0]); //返回數組的第0個abc </script>二、什麼是正則表達式?如何創建正則對象? 規則、模式,強大的字元串匹配工具; 創建正則對象:
JS風格 —> new RegExp(“a”, “i”) perl風格 —> /a/i
<script> var str='abcdef'; var re=new RegExp('a'); //字元串時候包含a //var re=new RegExp('a', 'i'); //第一個參數是正則表達式本身,第二個參數也是一個字元串,i表示忽略大小寫 var re=/a/i; //簡寫 雙斜杠裡面的就是規則 alert(re.test(str)); //test方法,檢驗這個字元串是否符合正則表達式的規則;這裡返回true </script>三、正則有幾種選項?分別是什麼意思? g和i g全局;i忽略大小寫; 四、search、match、replace是做什麼的?怎麼用?
<script> var str='asdf 443 vczxv 55'; var re=/\d/; // \d在正則里表示數字 alert(str.search(re)); //返回5; 數字4在第5個位置;使用正則就很快找出來第一個數字出現的位置 </script>
match 獲取匹配的項目
<script> var str='sdf e443 fedef 55 66gg 333322312 dff 99'; var re=/\d+/g; //g全局匹配 \d 表示“一個”數字 \d\d 表示“兩個”數字。+ 量詞 多個,任意長度;\d+ 表示多個數字;返回的是443,55,66... // var re=/\d/g; 返回的是 4,4,3,5,5,6,6.... 拆開了 alert(str.match(re)); //match匹配 </script>
repalce 只替換第一個 replace(a,b)表示把a替換成b
<script> var str='abacdAef'; alert(str.replace('a', 'T')); //返回TbacdAef 只替換第一個 </script>
<script> var str='abacdAef'; alert(str.replace(/a/gi, 'T')); //替換全部 而且 忽略大小寫 </script>
var re=/我們|你們|他們/g; //中間的豎線表示 或 的意思 oTxt2.value=oTxt1.value.replace(re, '**');
五、字元類([])包括幾種情況?
<script> var str='1b2 abc 1c2 ee'; var re=/1[abc]2/g; //1.方括弧-->或者,表示a或者b或者c 單個字元 [a,b]表示a或者逗號或者b 2.方括弧表示範圍:[0-9]表示所有的數字;[a-z]表示所有的字母;[0-9a-z]結合起來用表示數字或者字母; // \d 就是[0-9]的簡寫 alert(str.match(re)); //1b2,1c2 </script>任意字元 [abc] 表示a或者b或者c 單個字元 [a,b]表示a或者逗號或者b
範圍 [a-z]、[0-9] [0-9]表示所有的數字;[a-z]表示所有的字母;[0-9a-z]結合起來用表示數字或者字母; \d 就是[0-9]的簡寫
排除 [^a] 除了a以外所有的內容 六、正則有哪些轉義字元?分別是什麼意思?.(點)——任意字元
\d、\w、\s \w word 即 [a-z0-9_] 英文、數字、下劃線 \s space 空白
\D、\W、\S \D和\d正好相反;表示[^0-9] 非數字; \W 表示除了英文、數字、下劃線;
<script> var str=' fd rr erre fff '; alert(str.replace(/\s+/g, '')); //去掉空格 </script>
七、什麼是量詞?各個量詞分別有什麼作用?
基本形式是:
{n,m} 最少n次,最多m次
{n,} 最少n次,最多不限;即:至少n次
{n} 正好n次
{,n} 最小不限,最多n次
{n,} 至少n次
* 任意次 相當於{0,} 不建議使用;
? 零次或一次 {0,1}
+ 一次或任意次{1,}
<script> var str='我的QQ是:258344567,你的是4487773嗎?'; var re=/[1-9]\d{4,10}/g; //挑出兩個qq號 alert(str.match(re)); </script>
例子:校驗郵箱: 若用中文寫: 一串字母,數字,下劃線 @ 一串字母,數字 . 2到4個字母
var re=/^\w+@[a-z0-9]+\.[a-z]{2,4}$/; //^表示行首,$表示行尾 中間的必須符合要求 \.表示點本身 if(re.test(oTxt.value)) { alert('對了'); } else { alert('你寫錯了'); }
加行首和行尾是必要的;不加的話,表示包含規則的就匹配成功 --> 比如 中文[email protected] 這種也會匹配成功;因為中文[email protected] 中的部分符合規則;
通過行首和行尾,去掉首尾的空格: <script> var str=' ffe ww ee fewf '; var re=/^\s+|\s+$/g; //去掉首尾的空格,中間的空格保留 alert('('+str.replace(re, '')+')'); </script>
檢測中文:
<script> var str='asdfb 34啊 +_=45 '; var re=/[\u4e00-\u9fa5]/; //檢測是否有中文存在;u表示utf8編碼;4e00表示第一個漢字,9fa5是最後一個 alert(re.test(str)); //true,str中有中文 </script>
單詞邊界 \b
完美版getByClass
<script> function getByClass(oParent, sClass) { var aEle=oParent.getElementsByTagName('*'); var aResult=[]; var re=new RegExp('\\b'+sClass+'\\b', 'i'); // \b是單詞邊界 var i=0; for(i=0;i<aEle.length;i++) { if(re.test(aEle[i].className)) { aResult.push(aEle[i]); } } return aResult; } </script>