• 正则表达式学习汇总


    1.匹配以数字开头,并以 abc 结尾的字符串。:

    var str = "123abc";
    var patt1 = /^[0-9]+abc$/;
    document.write(str.match(patt1));

    以下标记的文本是获得的匹配的表达式:

    123abc
    知识点:
    ^ 为匹配输入字符串的开始位置。字符串的首个字母
    
    [0-9]+匹配多个数字, [0-9] 匹配单个数字,+ 匹配一个或者多个。
    
    abc$匹配字母 abc 并以 abc 结尾,$ 为匹配输入字符串的结束位置。
    2.我们在写用户注册表单时,只允许用户名包含字符、数字、下划线和连接字符(-),并设置用户名的长度,我们就可以使用以下正则表达式来设定。
    {} 表示长度
    3.+  *  ?的区别
    runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。
    
    runoo*b,可以匹配 runob、runoob、runoooooob 等,* 号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。
    
    colou?r 可以匹配 color 或者 colour,? 问号代表前面的字符最多只可以出现一次(0次、或1次)。

    4.特别字符

    特别字符    描述
    $    匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '
    ''
    '。要匹配 $ 字符本身,请使用 $。
    ( )    标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。
    *    匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 *+    匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 +。
    .    匹配除换行符 
     之外的任何单字符。要匹配 . ,请使用 . 。
    [    标记一个中括号表达式的开始。要匹配 [,请使用 [。
    ?    匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 ?。
        将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n''
    ' 匹配换行符。序列 '\' 匹配 "",而 '(' 则匹配 "("
    ^    匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。要匹配 ^ 字符本身,请使用 ^。
    {    标记限定符表达式的开始。要匹配 {,请使用 {。
    |    指明两项之间的一个选择。要匹配 |,请使用 |。

    5.以下正则表达式匹配一个正整数,[1-9]设置第一个数字不是 0,[0-9]* 表示任意多个数字:

     /[1-9][0-9]*/

    6.如果你想设置 0~99 的两位数,可以使用下面的表达式来至少指定一位但至多两位数字。

    /[0-9]{1,2}/

    上面的表达式的缺点是,只能匹配两位数字,而且可以匹配 0、00、01、10 99 的章节编号仍只匹配开头两位数字。

    改进下,匹配 1~99 的正整数表达式如下:

     

    /[1-9][0-9]?/

    /[1-9][0-9]{0,1}/

    7.定位符

    字符    描述
    ^    匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 
     或 
     之后的位置匹配。
    $    匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 
     或 
     之前的位置匹配。
        匹配一个单词边界,即字与空格间的位置。
    B    非单词边界匹配。

    8.ctf题目

    通过读代码可以看出只要我们构造出符合正则表达式的字符串通过GET传参传过去就可以看到 key 即 flag

    通过这道题看了很多正则表达式的语法规则……

    首先分析这道题:

    定界符:/和/(一般来说是这两个,其实除了和字母数字其它的只要是成对出现都可以看做定界符,比如##、!!之类的);

    . (一个点):表示可以匹配任何字符;

    *   :前面的字符重复零次或多次;

    {n,m} :前面的字符重复4~7次;

    (反斜线):后面的字符被转义;

    [a-z] :在a到z中匹配 ;

    [[:punct:]] :匹配任何标点符号;

    /i  :表示这个正则表达式对大小写不敏感;

    至此,我们可以对这道题的正则表达式进行构造。

    例如:keyakeyaaaakey:/a/aakeyb!

    有很多只要符合都可以

  • 相关阅读:
    线程间的通信
    高速排序算法
    LightOJ 1205 Palindromic Numbers
    java异常处理
    Android Bundle类
    Linux守护进程的编程实现
    深入浅出JMS(一)——JMS简单介绍
    Maven安装与配置
    matlab学习------------普通dialog对话框,错误对话框errordlg,警告对话框warndlg
    读书笔记:计算机网络4章:网络层
  • 原文地址:https://www.cnblogs.com/trevain/p/14273565.html
Copyright © 2020-2023  润新知