码迷,mamicode.com
首页 > 其他好文 > 详细

初识正则表达式

时间:2016-05-07 00:49:26      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

一、字符串操作包括哪些?

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>

例子:校验邮箱:  若用中文写:    一串字母,数字,下划线   @  一串字母,数字   .   24个字母

var re=/^\w+@[a-z0-9]+\.[a-z]{2,4}$/;  //^表示行首,$表示行尾  中间的必须符合要求 \.表示点本身  
        if(re.test(oTxt.value))
        {
            alert(‘对了‘);
        }
        else
        {
            alert(‘你写错了‘);
        }

加行首和行尾是必要的;不加的话,表示包含规则的就匹配成功 --> 比如      中文asdj@123.comere    这种也会匹配成功;因为中文asdj@123.comere   中的部分符合规则;

通过行首和行尾,去掉首尾的空格:
<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>

 

初识正则表达式

标签:

原文地址:http://www.cnblogs.com/webcome/p/5467415.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!