全面了解JS中的正则表达式

正则:就是操作字符串
1. 字符串操作
    str.split(); //分割
    str.toLowerCase(); //转小写
    str.toUpperCase(); //转大写
    str.charAt();//下标
    str.subString(1,2);//截取字符串(包含起始,不包含结束)
    str.indexOf();//查找下标
    str.lastIndexOf(); //从后面往前找
    str.charCodeAt();//转unicode
    string.fromCharCode();//将Unicode转为字符
    str.replace();
    str.slice() //跟substring类似
2. 数组操作
    arr.splice(起始位置,n);//起始位置开始(从0开算),删除n个
    arr.slice(起始位置,结束位置);//起始位置开始“截取(不是删除)”,m-n个,不影响数组本身
    例:var arr1 = [1,2,3,4,5];
                arr1.splice(1,2);//23         arr1.splice(2,2);//34
                alert(arr1);//145             alert(arr1);//125
            var arr2 = [1,2,3,4,5];
                arr2.slice(1,2);//2  一个      alert(arr2.slice(2,2));//空
                alert(arr2);//12345            alert(arr2);//12345
3. 正则
正则:
    1.方便
    2.性能极高
什么是正则:正则就是一套规则
    全称:正则表达式(规则表达式)
创建:
    var reg=new RegExp(); regular expression :正则表达式
        new RegExp('表达式','选项');
    str.search(正则); 查找,只找第一次出现的位置,返回出现的位置
    JS风格:new RegExp('','');
    Perl风格:/a/i;

match:匹配
    str.match();//
        匹配出来的是一个数组,找不到返回null
        把符合的全部提取出来

str.replace(正则,添加的对象);
js或者|| 
正则的或者 |

选项: 
i:ignore 忽略大小写
g:global 全局
m:mutil-line 多行
选项不区分先后。
^行首   =>  ^不配合m,代表整个字符串的开头
       =>   ^配合m,会识别字符串换行
$行尾  =>

方括号:
1.[q,a,s] 代表 q|a|s
2./q[acd]c/  代表qac | qcc | qdc
3.r[d,f]  rd rf 
4.\d  [0,1,2,3,4,5,6,7,8,9]   
5. "-"代表一个区间  [0-9]
6.[^0-9] ^排除  非数字
  [^a-z]  非字母

量词:
    /\d\d\d\d\d/
    {n} 正好n个 /\d{5}/  
    {n,m}最少n个,最多m个  
        /\d{1,4}/
    {n,}最少n个,多了不限
        /\d{n,-10}/  错误写法
    {,m} 最少不限,最多m个  不能这么写
    {0,1}可有可无

简写:
    + {1,} 若干
    * {0,}可以没有,有了不限
    ? {0,1} 可有可无

/ab+/    是abbbbbbbbbbbb
/(ab)+/  匹配的是ababab
    ()正则里面叫:分组
/abc[0-9]{1,4}/
    abc1
    abc11
    abc111111  错了

转译:\
    \d digital  数字 [0-9]
    \w  word 单词
        代表区间:[a-z0-9_]->字母、数字或者_
    \s space 空白
    \D  非数字 [^0-9]
    \W  非单词 [^a-z0-9_]
    \S  非空白
    . 任意东西
    \. 点本身(x想要.)
    \\    \本身
    \\\\  \\本身
    \n 换行

/./  任意一个
/.+/  任意多个
/.*/ 可有可无

reg.test(str)
    如果符合返回true,否则返回false
    只要其中有一部分符合就返回true,否则返回false

例1:校验座机号
010-88688866
0416-1234567
88688866(不加区号也可以)
区号:(0[1-9]\d{1,2}-)?
号码:[1-9]\d{6,7}
/^(0[1-9]\d{1,2}-)?[1-9]\d{6,7}$/


例2:校验邮箱:
abc@163.com
10000@qq.com
zl@datura.com
用户名:\w+
\w+ @ [a-z0-9]+ (.[a-z]{2,8}){1,2}
\w+@[a-z0-9]+(.[a-z]{2,8}){1,2}


例3:校验中文

/[\u4e00-\u9fa5]{2,8}/

例4:校验手机号
移动号码:134 135 136 137 138 139 147 150 151 152 157 158 159 178 182 183 184 187 188
联通号码:130 131 132 145 155 156 171 175 176 185 186
电信号码:133 149 153 173 177 180 181 189

/^0?(13[0-9]|15[012356789]|18[0-9]|14[579]|17[135678])[0-9]{8}$/

例5:校验身份证号
公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。
出生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。
顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。
下面是正则表达式:
出生日期1800-2099 (18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])
身份证正则表达式/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i
位校验规则 6位地址编码+6位出生日期+3位顺序号
位校验规则 6位地址编码+8位出生日期+3位顺序号+1位校验位


4. 补充
    编码:encodeURIComponent(str)
    解码:decodeURIComponent(str)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • 初衷:看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印...
    DCbryant阅读 3,981评论 0 20
  • tags: 正则表达式categories: JavaScript欢迎点击我的博客原文 前端会遇到很多字符串验证问...
    浅茉Sara阅读 756评论 1 2
  • 声明:本文基本是转载千叶的博客,里面稍微修改。 一、通过第三方类库正则匹配 在ios项目中可以借用第三方框架Reg...
    黑夜0411阅读 1,181评论 0 0
  • 1.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式。正则表达式可以检测给定的字符串是否...
    暴_暴阅读 784评论 0 10
  • 安装教程 前期准备 安装介质 在安装之前我们先要准备一个安装介质,在这里只推荐U盘作为安装介质。 到https:/...
    Otis4631阅读 5,424评论 0 5