正则表达式——火星文

之前在学习到正则表达式的时候,真的看了两秒直接就跳过了,真的看到都怕,来自地球的我表示真的看不懂这个传说中的火星文,但是,要想学习到更多的知识,我深知逃避是解决不了问题的,于是我硬着头皮尝试的去理解它,今天简单记录下来,以供以后来鄙视

正则表达是其实就是规则表达式,就是我们要找的条件翻译成计算机能读懂的语言

创建正则对象有两种方式:

js风格——new RegExp("a","i");   

perl风格——/a/i;      

语法与释义:
  基础语法 "^([]{})([]{})([]{})$"
  正则字符串 = "开始([包含内容]{长度})([包含内容]{长度})([包含内容]{长度})结束"

匹配邮箱的例子

//邮箱规则拆分:开始一串数字、字母、下划线@一串数字、英文.一串英文(最少2,最多4)结束

var re=/^w+@[a-z0-9]+.[a-z]{2,4}$/g;

其中g代表全局匹配,i代表不区分大小写;

常用运算符与表达式:
  ^ 开始
  () 域段
  [] 包含,默认是一个字符长度
  [^] 不包含,默认是一个字符长度
  {n,m} 匹配长度 
  . 任何单个字符(. 字符点)
  | 或
   转义
  $ 结尾
  [A-Z] 26个大写字母
  [a-z] 26个小写字母
  [0-9] 0至9数字
[A-Za-z0-9] 26个大写字母、26个小写字母和0至9数字
  , 分割

去掉首尾空格例子:--考察开头和结束字符使用

var re=/^s+|s$/g;

匹配是否存在中文:

var re=/[u4e00-u9fa5]/;

理解常用的正则表达式:

[abc] a或者b或者c

等价:
等价是等同于的意思,表示同样的功能,用不同符号来书写。
{n,m}表示范围,至少出现n次,最多m次
?,*,+,d,w 都是等价字符
量词:
  ?等价于匹配长度{0,1}    //零次或1次
  *等价于匹配长度{0,}     //任意次
  +等价于匹配长度{1,}    //一次或任意次
 
 
  d等价于[0-9]  
  D等价于[^0-9]
  w等价于[A-Za-z_0-9]
  W等价于[^A-Za-z_0-9]
  
  匹配一个单词边界,也就是指单词和空格间的位置(即正则表达式的“匹配”有两种概念,一种是匹配字符,一种是匹配位置,这里的就是匹配位置的)。例如,“er”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”
  B匹配非单词边界。“erB”能匹配“verb”中的“er”,但不能匹配“never”中的“er”
 
运用正则,写完美版getByClass()
function getByClass(oParent,aClass){
                var aEle=oParent.getElementsByTagName('*');
                var aResult=[];
                var re=new RegExp('\b'+sClass+'\b','i');
                
                for(var i=0;i<aEle.length;i++){
                    if(re.test(aEle[i].className)){
                        aResult.push(aEle[i]);
                    }
                }
                return aResult;
            }

  

原文地址:https://www.cnblogs.com/feilu2016/p/6867831.html