zoukankan      html  css  js  c++  java
  • 正则表达式

    基本语法

    + :其前导字符必须在目标对象中连续出现一次或多次。

    * 其前导字符必须在目标对象中出现零次或连续多次。

    ? 其前导对象必须在目标对象中连续出现零次或一次。

    {n} n 是一个非负整数。匹配确定的 n 次。

    {n,} n 是一个非负整数。至少匹配 n 次。

    {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

    s:用于匹配单个空格符,包括tab键和换行符;

    S:用于匹配除单个空格符之外的所有字符;

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

    D:匹配一个非数字字符。等价于 [^0-9]。

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

    W:用于匹配所有与w不匹配的字符;

    f 匹配一个换页符。

    匹配一个换行符。

    匹配一个回车符。

    匹配一个制表符。

    v 匹配一个垂直制表符。

    xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例:'x41' 匹配 "A"。

    um 匹配 num,其中 num 是一个正整数。

    . :用于匹配除换行符( )之外的所有字符。

    ^ 匹配模式必须出现在目标字符串的开头

    $ 匹配模式必须出现在目标对象的结尾

     匹配模式必须出现在目标字符串的开头或结尾的两个边界之一

    B 匹配对象必须位于目标字符串的开头和结尾两个边界之内, 即匹配对象既不能作为目标字符串的开头,也不能作为目标字符串的结尾。

    [A-Z] 与从A到Z范围内任何一个大写字母相匹配

    [a-z] 与从a到z范围内任何一个小写字母相匹配。

    [0-9] 与从0到9范围内任何一个数字相匹配。

    (?:pattern) 例:industr(?:y|ies) 用来匹配industry或industries

    (?=pattern) 正向预查。例:Windows (?=95|98|NT|2000) 能匹配 "Windows 2000" 中的 "Windows"

    (?!pattern) 负向预查。例:Windows (?!95|98|NT|2000) 能匹配 "Windows 3.1" 中的 "Windows",不能匹配"Windows 2000" 中的 "Windows"  

    ([a-z][A-Z][0-9])+ 与任何由字母和数字组成的字符串,如 “aB0” 等相匹配。 无法与诸如 “abc”等的字符串匹配,因为“abc”中的最后一个字符为字母而非数字。 () 把字符串组合在一起。()符号包含的内容必须同时出现在目标对象中

    | 如果我们希望在正则表达式中实现类似编程逻辑中的“或”运算,在多个不同的模式中任选一个进行匹配的话,可以使用管道符

    ^出现在 []内时就被视做否定运算符;而当^位于[]之外,或没有[]时,则应当被视做定位符。

    当用户需要在正则表达式的模式中加入元字符,并查找其匹配对象时,可以使用转义符“”

    ---------------------------------------------------------------------------------------------------------

    -- JAVASCRIPT

    ---------------------------------------------------------------------------------------------------------

    <html>

      <head>

        <script language="Javascript">

          function verifyAddress(obj) {

            var email = obj.email.value;

            var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;

            flag = pattern.test(email);

            if(flag) {

              alert("Your email address is correct!");

              return true;

            } else {

              alert("Please try again!");

              return false;

            }

          }

        </script>

      </head>

      <body>

        <form onSubmit="return verifyAddress(this);">

          <input name="email" type="text">

          <input type="submit">

        </form>

      </body>

    </html>

    正则表达式对象

    语法 1

    re = /pattern/[flags]

    语法 2

    re = new RegExp("pattern",["flags"])

    Flags : g (全文查找出现的所有 pattern)

            : i (忽略大小写)

            : m (多行查找)

    ---------------------------------------------------------------------------------------------------------

    语法 1 的例子:

    <html>

      <head>

        <script language="Javascript">

          function MatchDemo() {

            var str = "<html><head>aaa </head></html><p>bbb</p>";

            var regx = /<(.*)>.*</1>/g;

            var re = str.match(regx);

            //var re = regx.exec(str);

            document.getElementById("str").value = re;

            return;

          }

        </script>

      </head>

      <body>

        <input id="str" type="text">

        <input value="click" type="button" onclick="MatchDemo();">

      </body>

    </html>

    ---------------------------------------------------------------------------------------------------------

    语法 2 的例子:

    <html>

      <head>

        <script language="Javascript">

          function MatchDemo() {

            var str = "<html><head>aaa </head></html><p>bbb</p>";

            var regx = new RegExp("<(.*)>.*</\1>","g");  // new RegExp()方法中需要注意‘’字符的使用

            // var re = str.match(regx);

            var re = regx.exec(str);

            // re = regx.exec(str);

            document.getElementById("str").value = re;

            return;

          }

        </script>

      </head>

      <body>

        <input id="str" type="text">

        <input value="click" type="button" onclick="MatchDemo();">

      </body>

    </html>

    ---------------------------------------------------------------------------------------------------------

    如果 exec 方法或 match 方法没有找到匹配,则它返回 null。 如果它找到匹配,则 exec 方法或 match 方法返回一个数组,并且更新全局 RegExp 对象的属性,以反映匹配结果。 数组的0元素包含了完整的匹配,而第1到n元素中包含的是匹配中出现的任意一个子匹配。 如果为正则表达式设置了全局标志,exec或 match 从以 lastIndex 的值指示的位置开始查找。 如果没有设置全局标志,exec或 match 忽略 lastIndex 的值,从字符串的起始位置开始搜索。

    match()非全局的正则表达式的话,执行结果和这个正则表达式的exec()方法执行结果一样。 exec 方法,match 方法返回的数组有三个属性,分别是 input、index 和 lastIndex。 Input 属性包含了整个被查找的字符串。 Index 属性中包含了整个被查找字符串中被匹配的子字符串的位置。 LastIndex 属性中包含了匹配中最后一个字符的下一个位置。

    ---------------------------------------------------------------------------------------------------------

    test 方法

    返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式。

    <html>

      <head>

        <script language="Javascript">

          function MatchDemo() {

            var str = "<html><head>aaa </head></html><p>bbb</p>";

            var regx = new RegExp("<(.*)>.*</\1>","m");

            var flg = regx.test(str);

            document.getElementById("str").value = flg;

            return;

          }

        </script>

      </head>

      <body>

        <input id="str" type="text">

        <input value="click" type="button" onclick="MatchDemo();">

      </body>

    </html>

    ---------------------------------------------------------------------------------------------------------

    search 方法

    返回与正则表达式查找内容匹配的第一个子字符串的位置。

    <html>

      <head>

        <script language="Javascript">

          function MatchDemo() {

            var str = "<html><head>aaa </head></html><p>bbb</p>";

            var regx = new RegExp("<(.*)>.*</\1>","m");

            var flg = str.search(regx);

            document.getElementById("str").value = flg;

            return;

          }

        </script>

      </head>

      <body>

        <input id="str" type="text">

        <input value="click" type="button" onclick="MatchDemo();">

      </body>

    </html>

    ---------------------------------------------------------------------------------------------------------

    -- JAVA

    ---------------------------------------------------------------------------------------------------------

    Java java.util.regex

    1). Java中在某个字符串中查询某个字符或者某个子字串

    String str = "hello world!";

    String regx = "or";

    Pattern p = Pattern.compile(regx); // Pattern.compile(regx,Pattern.CASE_INSENSITIVE); 忽略大小写

    Matcher m = p.matcher(str);

    boolean rs = m.find();

    2). 在某个文件中获取一段字符串

    String str = "hello world!";

    String regx = "or";

    Pattern p = Pattern.compile(regx); // Pattern.compile(regx,Pattern.CASE_INSENSITIVE); 忽略大小写

    Matcher m = p.matcher(str);

    boolean rs = m.find();

    for (int i=1; i<=m.groupCount(); i++) {

      System.out.println(m.group(i));

    }

    3). 字符串的替换/删除

    String regEx="aaa+";

    Pattern pat=Pattern.compile(regEx);

    Matcher mat=pat.matcher("aaabbbccaadd");

    String s=mat.replaceAll("#");

  • 相关阅读:
    验证信息json返回,前台接收显示无刷新。笔记
    ThinkPHP5 查询数据并处理结果
    PHP 数组和字符串互相转换实现方法
    php+jquery+ajax+json的一个最简单实例
    is_numeric 检测变量是否为数字或数字字符串
    PHP中使用cURL实现Get和Post请求的方法
    mb_substr实例
    推荐:多目标 mmoe
    多目标模型--DBMTL
    正负例优化
  • 原文地址:https://www.cnblogs.com/keyiei/p/3581166.html
Copyright © 2011-2022 走看看