zoukankan      html  css  js  c++  java
  • 正则学习笔记

    文星家:  ? *  +  即 01次、0多次、1多次

    ^                  匹配起始端

    $                  匹配结尾处

    .                  匹配任意单个字符,但换行符除外

    (x)              匹配x并记住x,前提是匹配

    (?:x)          匹配x但不记住x

    X(?=y)             匹配x,仅当后面紧跟着y时。如果符合匹配,则只有x会被记住,y不会被记住。

    X(?!y)                匹配x,仅当后面不紧跟着y时。如果符合匹配,则只有x会被记住,y不会被记住。

    x|y                匹配x或y。注意如果x和y都匹配上了,那么只记住x。

    {n}                匹配前一个字符的n次出现

    {n,}                匹配前一个字符的至少n次出现

    {n,m}                匹配前一个字符的至少n次最多m次的出现

    [xyz]                xyz表示一个字符串,该模式表示匹配[]中的一个字符,形式上[xyz]等同于[x-z]

    [^xyz]                该模式表示匹配非[]中的一个字符,形式上[^xyz]等同于[^x-z]

    [\b]                匹配退格键

    \b                匹配一个词的边界符,例如空格和换行符等等,当然匹配换行符时,表达式应该附加参数m

    var regx=/\bc./;

    var rs=regx.exec(“Beijing is a beautiful city”);

    结果:匹配成功,rs的值为:{ci},注意c前边的空格不会匹配到结果中,即{ ci}是不正确的。

    \B                代表一个非单词边界。

    \cX                匹配一个控制字符

    \d                匹配一个数字字符,等同于[0-9]

    \D                匹配一个非数字字符,等同于[^0-9]

    \f                匹配一个换页符

    \n                匹配一个换行符。因为是换行符,所以在表达式中要加入m参数

    \r                匹配一个回车符

    \s                匹配一个空格符,等同于[ \f\n\r\t\v\u00A0\u2028\u2029]

    \S                匹配一个非空格符,等同于[ ^\f\n\r\t\v\u00A0\u2028\u2029]

    \t                匹配一个tab

    \v                匹配一个竖向的tab

    \w                匹配一个数字、_或字母表字符,即[A-Za-z0-9_ ]

    \W                匹配一个非数字、_或字母表字符,即[^A-Za-z0-9_ ]

    \n                注意不是\n,这里n是一个正整数,表示匹配第n个()中的字符

    \0                匹配一个NUL字符。

    \xhh                匹配一个由两位16进制数字所表达的字符。

    \uhhhh                匹配一个由四位16进制数字所表达的字符。

    g:代表可以进行全局匹配。

    i:代表不区分大小写匹配。

    m:代表可以进行多行匹配。

    1>exec(str),返回str中与表达式相匹配的第一个字符串,而且以数组的形式表现,当然如果表达式中含有捕捉用的小括号,则返回的数组中也可能含有()中的匹配字符串

    2>test(str),判断字符串str是否匹配表达式,返回一个布尔值

    1>match(expr),返回与expr相匹配的一个字符串数组,如果没有加参数g,则返回第一个匹配,加入参数g则返回所有的匹配

    2>search(expr),返回字符串中与expr相匹配的第一个匹配的index值

    3>replace(expr,str),将字符串中匹配expr的部分替换为str。另外在replace方法中,str中可以含有一种变量符号$,格式为$n,代表匹配中被记住的第n的匹配字符串(注意小括号可以记忆匹配)。

    对于replace(expr,str)方法还要特别注意一点,如果expr是一个表达式对象则会进行全局替换(此时表达式必须附加参数g,否则也只是替换第一个匹配),如果expr是一个字符串对象,则只会替换第一个匹配的部分

    4>split(expr),将字符串以匹配expr的部分做分割,返回一个数组,而且表达式是否附加参数g都没有关系,结果是一样的

    2)和表达式自身相关的两个属性:

    1>lastIndex,返回开始下一个匹配的位置,注意必须是全局匹配(表达式中带有g参数)时,lastIndex才会有不断返回下一个匹配值,否则该值为总是返回第一个下一个匹配位置

    2>source,返回表达式字符串自身

    3)和匹配结果相关的三个属性:

    1>index,返回当前匹配的位置

    var regx=/user\d/;

    var rs=regx.exec(“sdsfuser1dfsfuser2”);

    var index1=rs.index;

    2>input,用于匹配的字符串。例如:

    var regx=/user\d/;

    var rs=regx.exec(“sdsfuser1dfsfuser2”);

    var input=rs.input;

    input的值为sdsfuser1dfsfuser2。

    3>[0],返回匹配结果中的第一个匹配值,对于match而言可能返回一个多值的数字,则除了[0]外,还可以取[1]、[2]等等。例如:

    var regx=/user\d/;

    var rs=regx.exec(“sdsfuser1dfsfuser2”);

    var value1=rs[0];

    rs=regx.exec(“sdsfuser1dfsfuser2”);

    var value2=rs[0];

    value1的值为user1,value2的值为user2

    5,实际应用

    1)实际应用一

    描述:有一表单,其中有一个“用户名”input域

    要求:汉字,而且不能少于2个汉字,不能多于4个汉字。

    实现:

    <script>

    function checkForm(obj){

         var username=obj.username.value;

         var regx=/^[\u4e00-\u9fa5]{2,4}$/g

         if(!regx.test(username)){

                   alert(“Invalid username!”);

                   return false;

         }

         return true;

    }

    </script>

    <form name=“myForm”onSubmit=“return checkForm(this)”>

        <input type=“text” name=“username”/>

        <input type=“submit” vlaue=“submit”/>

    </form>

    2)实际应用二

    描述:给定一个含有html标记的字符串,要求将其中的html标记去掉。

    实现:

    <script>

    function toPlainText(htmlStr){

         var regx=/<[^>]*>|<\/[^>]*>/gm;

         var str=htmlStr.replace(regx,"");

         return str;

    }

    </script>

    <form name=“myForm”>

        <textarea id=“htmlInput”></textarea>

        <input type=“button” value=“submit” onclick=“toPlainText(document.getElementById(‘htmlInput’).value”/>

    </form>



    返回导读目录,阅读更多随笔



    分割线,以下为博客签名:

    软件臭虫情未了
    • 编码一分钟
    • 测试十年功


    随笔如有错误或不恰当之处、为希望不误导他人,望大侠们给予批评指正。

  • 相关阅读:
    Tomcat服务器原理详解
    junit入门
    lombok
    java 运行指定类的main函数
    席位分配问题——惯例Q值法和d&#39;hondt法的MATLAB程序
    5.2 calendar--通用日期的相关函数(3)
    [笔记]软件体系结构(1)--模式初印象
    hdu 1003
    linux虚拟机上挂载U盘
    Android中Java与web通信
  • 原文地址:https://www.cnblogs.com/08shiyan/p/1864906.html
Copyright © 2011-2022 走看看