正则表达式

Posted 一个柠檬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。

一、正则表达式


1、正则表达式包括两部分:

   ① 定义正则表达式的规则;
  ② 正则表达式的模式(i/g/m);

2、声明正则表达式:

  ① 字面量声明:
        var reg=/表达式规则/表达式模式;
        eg: var reg= /white/g;
       ② 使用new关键字:
            var reg=new RegExp("表达式规则","表达式模式");
            eg: var reg=new RegExp("white","g"); 

3、正则表达式的常用模式:

   ① g:全局匹配。不加g默认为非全局匹配,只匹配第一个符合要求的字符串。
       "www".replace(/w/,"#"); -> #ww;
       "www".replace(/w/g,"#"); -> ###;
 
   ② i:忽略大小写。不加i,默认要求大小写不匹配;
       "aAa".replace(/A/,"#"); -> a#a;
       "aAa".replace(/A/i,"#"); -> #Aa;
       "aAa".replace(/A/gi,"#"); -> ###;
 
   ③ m:多行匹配模式。不带m,则一个字符串只有一个开头,一个结尾;
          带m后,如果字符串分为多行,则每行都有一个开头,一个结尾。
         `abc                                          `#bc
          abc`.replaced(/^a/g,"#") ->  abc`
 
         `abc                                            `#bc
          abc`.replaced(/^a/gm,"#") -> #bc`
 
    [Tips:如何写多行字符串]
     >>> 普通字符串中,插入\\n 表示换行
     >>> ES6中,允许使用反引号`包裹字符串,反引号包裹的字符串中,
           会保留空格与回车。`abc
                                        abc`
 

4、正则表达式的常用方法:

  ① test():检测一个字符串,是否符合正则表达式的验证,返回true或false;
         eg: /white/.test("whiteWhitewhite"); -> true
 
  ② exec():检测一个字符串,是否符合正则表达式的验证。如果验证成功,返回结果数组;如果验证失败,返回null;
            结果数组中:
              index属性:表示从字符串的第几个字符,开始符合正则要求;
              input属性:返回完整的被检索的字符串;
            下标第0个:表示符合整个正则表达式的那部分字符;
            下标第1个到第n个:表示符合正则的第1个到第n个子表达式的部分。
                                             子表达式,就是正则中的()。也就是,正则中有几个(), 结果
                                             数组中就有几个下标。
           /12(3)(4)5/.exec("aaa12345");
             [
               0:12345,
               1:3,
               2:4,
               index:3,
               input:"aaa12345",
               length:3,
             ]
 

5.正则表达式的应用实例通俗说明


校验是否全由数字组成

  /^[0-9]{1,20}$/

  ^ 表示打头的字符要匹配紧跟^后面的规则

  $ 表示打头的字符要匹配紧靠$前面的规则

  [ ] 中的内容是可选字符集

  [0-9] 表示要求字符范围在0-9之间

  {1,20}表示数字字符串长度合法为1到20,即为[0-9]中的字符出现次数的范围是1到20次。
  /^ 和 $/成对使用应该是表示要求整个字符串完全匹配定义的规则,而不是只匹配字符串中的一个子串。


校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串

  /^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/

  ^[a-zA-Z]{1} 表示第一个字符要求是字母。

  ([a-zA-Z0-9]|[._]){4,19} 表示从第二位开始(因为它紧跟在上个表达式后面)的一个长度为4到9位的字符串,它要求是由大小写字母、数字或者特殊字符集[._]组成。


校验用户姓名:只能输入1-30个以字母开头的字串

  /^[a-zA-Z]{1,30}$/


校验密码:只能输入6-20个字母、数字、下划线

  /^(\\w){6,20}$/

  \\w:用于匹配字母,数字或下划线字符


校验普通电话、传真号码:可以“+”或数字开头,可含有“-” 和 “ ”

  /^[+]{0,1}(\\d){1,3}[ ]?([-]?((\\d)|[ ]){1,12})+$/

  \\d:用于匹配从0到9的数字;

  “?”元字符规定其前导对象必须在目标对象中连续出现零次或一次

  可以匹配的字符串如:+123 -999 999 ; +123-999 999 ;123 999 999 ;+123 999999等


校验URL

  /^http[s]{0,1}:\\/\\/.+$/ 或 /^http[s]{0,1}:\\/\\/.{1,n}$/ (表示url串的长度为length(“https://”) + n )

  \\ / :表示字符“/”。

  . 表示所有字符的集

  + 等同于{1,},就是1到正无穷。

6、正则的应用 

"^\\d+$"  //非负整数(正整数 + 0) 
"^[0-9]*[1-9][0-9]*$"  //正整数 
"^((-\\d+)|(0+))$"  //非正整数(负整数 + 0) 
"^-[0-9]*[1-9][0-9]*$"  //负整数 
"^-?\\d+$"    //整数 
"^\\d+(\\.\\d+)?$"  //非负浮点数(正浮点数 + 0) 
"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数 
"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮点数(负浮点数 + 0) 
"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数 
"^(-?\\d+)(\\.\\d+)?$"  //浮点数 
"^[A-Za-z]+$"  //由26个英文字母组成的字符串 
"^[A-Z]+$"  //由26个英文字母的大写组成的字符串 
"^[a-z]+$"  //由26个英文字母的小写组成的字符串 
"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串 
"^\\w+$"  //由数字、26个英文字母或者下划线组成的字符串 
"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址 
"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   //  年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/   // 月/日/年
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"   //Emil
"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?"     //电话号码
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"   //IP地址

^([0-9A-F]{2})(-[0-9A-F]{2}){5}$   //MAC地址的正则表达式
^[-+]?\\d+(\\.\\d+)?$  //值类型正则表达式

"^\\\\d+$"  //非负整数(正整数 + 0) 
"^[0-9]*[1-9][0-9]*$"  //正整数 
"^((-\\\\d+)|(0+))$"  //非正整数(负整数 + 0) 
"^-[0-9]*[1-9][0-9]*$"  //负整数 
"^-?\\\\d+$"    //整数 
"^\\\\d+(\\\\.\\\\d+)?$"  //非负浮点数(正浮点数 + 0) 
"^(([0-9]+\\\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数 
"^((-\\\\d+(\\\\.\\\\d+)?)|(0+(\\\\.0+)?))$"  //非正浮点数(负浮点数 + 0) 
"^(-(([0-9]+\\\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数 
"^(-?\\\\d+)(\\\\.\\\\d+)?$"  //浮点数 
"^[A-Za-z]+$"  //由26个英文字母组成的字符串 
"^[A-Z]+$"  //由26个英文字母的大写组成的字符串 
"^[a-z]+$"  //由26个英文字母的小写组成的字符串 
"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串 
"^\\\\w+$"  //由数字、26个英文字母或者下划线组成的字符串 
"^[\\\\w-]+(\\\\.[\\\\w-]+)*@[\\\\w-]+(\\\\.[\\\\w-]+)+$"    //email地址 
"^[a-zA-z]+://(\\\\w+(-\\\\w+)*)(\\\\.(\\\\w+(-\\\\w+)*))*(\\\\?\\\\S*)?$"  //url

 

以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

PHP 正则表达式总结

正则表达式

正则表达式

正则表达式“或“的使用

正则表达式 验证数字格式 非负数 小数点后保留两位 数字正则 double正则

JS正则表达式详解