匹配字符JavaScript: The Definitive Guide 权威指南,读书笔记(二)

发一下牢骚和主题无关:

    //  ======================================================================

    //  第十章 正则表达式

    //  ======================================================================

    //  

    //  RegExp对象 和 直接量

    //  

    //  正则表达式,就是能找到我的模式的字符串就会返回true,不管其他的字符是什么。

    //  

    //  特殊含义的标点符号:

    //  ^ $ . * + ? = ! : | \ / () [] {}

    //  

    var pattern = /s$/;  // 匹配全部s扫尾的字符串

    pattern = new RegExp('s$');

    // Note: 如果记不清楚哪些标点符号需要用反斜杠转义,可以在每一个标点符号之前都使用反斜杠。\

    //  字符类 [] 和它包括的恣意字符都匹配,如:[abc]  匹配"a","b","c"。匹配的是单个字符

    //    [...]  位于括号之内的恣意字符

    //    [^...]  不在括号中的恣意字符

    //  

    //    .     除 换行符 和其他Unicode行终止符以外的恣意字符

    //    \w    任何ASCII 单字字符,等价于[a-zA-Z0-9_]

    //    \W    任何ASCII 非单字字符,等价于[^a-zA-Z0-9_]

    //    \s    任何Unicode空白符

    //    \S    任何非Unicode空白符,注意\w和\S不同

    //    \d    任何ASCII 数字,等价于[0-9]

    //    \D    除了ASCII数字以外的任何字符,等价于[^0-9]

    //    [\b]  退格直接量

    //    

    //  重复

    //    {n, m}    匹配前一项最少n次,但是不能超过m次

    //    {n,}      匹配前一项n次,或更多次

    //    {n}       匹配前一项恰好n次

    //    ?         匹配前一项0次或1次,{0,1}

    //    +         匹配前一项1次或多次。等价于{1,}   // 最少有一次

    //    *         匹配前一项0次或多次。等价于{0,}  // 前一项有没有都匹配!!

    //    

    //    () 的作用之一: 把独自的项目组合成子表达式,以便像处理一个独立的单元那样用 | * + ? 来处理它们。

    //    

    //  正则表达式的选择、分组和引用字符

    //    |         选择

    //    (...)     组合,可以使用 | * + ?来处理它,而且可以被引用

    //    (?:...)   只组合,不引用

    //    \n        引用()中匹配的字符,它匹配的是字符,不是模式。疏忽 (?: ),从左到右,数下左括号,不管嵌套不嵌套

    //    

    //  指定匹配的位置

    //  

    //  *正则表达式的锚字符

    //  ^      匹配字符串的扫尾,在多行检索中,匹配一行的扫尾

    //  $      匹配字符串的扫尾,在多行检索中,匹配一行的扫尾

    //  \b     匹配一个词语的边界  [\b] 匹配的是退格符

    //  \B     匹配不是边界

    //  (?=p)  正向前声明,要求接下来的字符都与模式p匹配,但是不包括匹配中的那些字符

    每日一道理
当浮华给予我们过多欺骗,现实中的虚假几乎让我们忘却了真的存在,是真情唤回了迷离的心,是真情带给了我们最纯、最真的感觉,它流露的是美的誓言,渗透的是永恒执著的真爱。

    //  (?!p)  反向前声明,要求接下来的字符不与模式p匹配

    //  

    //  用于模式匹配的String方法

    //  "JavaScript".search(/script/i);               // 返回4,第一次找到的字串位置。

    //  "JavaScript".replace(/script/i, 'Bean');      // 返回JavaBean

    //  "JavaScript".replace(/(script)/i, '$1Bean');  // 返回JavaScriptBean

    //  "253dd234".match(/\d+([a-z]+)/);

    //  "1,2, 3 , 4 ,5".split(/\s*,\s*/);             // 返回["1", "2", "3", "4", "5"]

    //  

    //  例子:

    //  电子邮件地址的正则表达式分析。

    //  

    //  四个邮件提供商规则:

    //   1. gmail.com:    使用字母,数字,句点。                 句点不能连续出现,不能出现在扫尾扫尾。

    //   2. hotmail.com:  使用字母,数字,句点,减号,下划线。   句点、减号、下划线可以一同出现(-_.)。只有句点不能连续出现且不能出现在扫尾扫尾。

    //   3. mail.163.com: 使用字母,数字,下划线。               下划线不能连续出现(不提示犯错,提示已经被注册)且不能在扫尾扫尾。

    //   4. mail.qq.com:  使用字母,数字,句点,减号,下划线。   句点,减号,下划线不能连续出现且不能出现在扫尾扫尾。

    //   

    //   所以我们需要验证的规则是:

    //     *邮件名称*:

    //         1. 可以包括字母、数字、句点、减号、下划线

    //         2. 句点不能出现在扫尾扫尾,不能连续出现

    //  

    //  域名注册规则:

    //   可以使用:字母,数字,减号。减号可以连续,但是不能出现在头尾。

    //   @右边部份:自定义部份.com.国家  // 自定义部份63个字符内, com 部份最长4位,如info, asia,国家部份 2位

    //   

    //  Email RegExp: 

    //  0). /^[\w-]+[\w-\.]+[\w-]@[a-zA-Z0-9-]{1,63}\.[a-zA-Z]{2,4}(\.[a-zA-Z]{2})?$/

    //       长处:兼容大部份的邮件地址了。

    //       缺点:句点连续不能判断出来,请知道不吝赐教。

    //       思考:{1,63}是否是有必要,是否是会影响执行效率?

    //       (个人猜想是要影响的,+,只要知道是1个以上就能够了;{1,63}还要判断是否是超过63个)

    //       

    //       加个(),掏出@阁下两部份:

    //       

    //       /^([\w-]+[\w-\.]+[\w-])@([a-zA-Z0-9-]{1,63}\.[a-zA-Z]{2,4}(?:\.[a-zA-Z]{2})?)$/

文章结束给大家分享下程序员的一些笑话语录: 3G普不普及现在已经不是看终端了,而是看应用,有好的,便宜实用的应用,花1000多买个能用的智能手机应该不是什么难事。反过来说,你200元拿一个智能手机,没有好的应用,看个电影要几十元,也是没人用3G。

--------------------------------- 原创文章 By
匹配和字符
---------------------------------

原文地址:https://www.cnblogs.com/xinyuyuanm/p/3098852.html