一、字符串操作包括哪些?
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=/^\[email protected][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>