精华内容
下载资源
问答
  • 正则表达式是我们经常要用到的检验字符串的是否合法的一个技术点,正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中...

    前言

    正则表达式是我们经常要用到的检验字符串的是否合法的一个技术点,正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

    正文

    构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。

    正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

    
    //应用举例
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" >
    /*
    * 技术要求: 当用户点击了验证是否合法按钮,要提示输入的内容是否合法
    * 验证合法性的规则是: 必须由字母, 数字。 下划线组成。 并且长度是 5 到 12 位。
    * */
    function onclickFun() {
    // 先获取这个标签对象。
    var usernameObj = document.getElementById("username");
    var usernameText = usernameObj.value;
    // 验证 字符串, 符合某个规则
    var patt = /^\w{5,12}$/;
    /*
    * test()方法用于测试某个字符串, 是不是匹配我的规则 ,
    * 匹配就返回 true。 不匹配就返回 false.
    * */
    var usernameSpanObj = document.getElementById("usernameSpan");
    if (patt.test(usernameText)) {
     alert("用户名合法! ");
    } else {
    alert("用户名不合法! ");
    }
    }
    </script>
    </head>
    <body>
    用户名: <input type="text" id="username" value="wzg"/>
    <span id="usernameSpan" style="color:red;">
    </span>
    <button onclick="onclickFun()">验证是否合法</button></body>
    </html>
    

    以下是常用的正则表达式

    要求 正则表达式
    只能输入数字 ^[0-9]*$
    整数或者小数 ^[0-9]+.{0,1}[0-9]{0,2}$
    只能输入n位的数字 ^\d{n,}$
    只能输入至少n位的数字 ^\d{n,}$
    只能输入m~n位的数字 ^\d{m,n}$
    只能输入零和非零开头的数字 ^(0|[1-9][0-9]*)$
    只能输入有两位小数的正实数 ^[0-9]+(.[0-9]{2})?$
    只能输入有1~3位小数的正实数 ^[0-9]+(.[0-9]{1,3})?$
    只能输入非零的正整数 ^+?[1-9][0-9]*$
    只能输入由26个英文字母组成的字符串 ^[A-Za-z]+$
    只能输入由26个大写英文字母组成的字符串 ^[A-Z]+$
    只能输入由26个小写英文字母组成的字符串 ^[a-z]+$
    只能输入由数字和26个英文字母组成的字符串 ^[A-Za-z0-9]+$
    只能输入由数字、26个英文字母或者下划线组成的字符串 ^\w+$
    只能输入汉字 ^[\u4e00-\u9fa5]{0,}$
    验证Email地址 ^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$
    验证InternetURL ^http://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$
    验证电话号码 ^((\d{3,4}-)
    正确格式为 XXX-XXXXXXX
    验证身份证号(15位或18位数字) ^\d{15}|\d{18}$
    验证一年的12个月 ^(0?[1-9]|1[0-2])$
    验证一个月的31天 ^((0?[1-9])|((1|2)[0-9])|30|31)$
    匹配html标签 <(.*)>(.*)<\/(.)>|<(.)\/>
    QQ ^[1-9]\d{4,8}$
    国际通用的电话号码 ^(1[0-2]\d|\d{1,2})$

    结束

    根据以上的常用表达式可以根据自己的需要去更改适合自己项目的新的表达式。

    展开全文
  • 匹配json字符串的正则表达式

    万次阅读 2017-03-24 20:40:10
    需求:一个字符串里可能包含一个或多个json格式子串以及一些普通格式子串, 希望用正则把json格式子串都匹配出来. 正则:(?(?:\{\s*"(?:\\"|[^"])+"\s*:\s*(?:(?P>json)|"(?:\\"|[^"])+"|[-+]?(0|[1-9]\d*)(?:\....

    在处理日志时, 发现文本里夹杂有json字符串, 希望能准确提取出来. 于是就有了下面这个正则表达式:

    (?<json>(?:\{\s*"(?:\\"|[^"])+"\s*:\s*(?:(?P>json)|"(?:\\"|[^"])+"|[-+]?(0|[1-9]\d*)(?:\.[-+]?(0|[1-9]\d*))?(?:[eE][-+]?(0|[1-9]\d*))?|(?:true|false)|null)(?:\s*,\s*"(?:\\"|[^"])+"\s*:\s*(?:(?P>json)|"(?:\\"|[^"])+"|[-+]?(0|[1-9]\d*)(?:\.[-+]?(0|[1-9]\d*))?(?:[eE][-+]?(0|[1-9]\d*))?|(?:true|false)|null))*\s*\}|\[\s*(?:(?P>json)|"(?:\\"|[^"])+"|[-+]?(0|[1-9]\d*)(?:\.[-+]?(0|[1-9]\d*))?(?:[eE][-+]?(0|[1-9]\d*))?|(?:true|false)|null)(?:\s*,\s*(?:(?P>json)|"(?:\\"|[^"])+"|[-+]?(0|[1-9]\d*)(?:\.[-+]?(0|[1-9]\d*))?(?:[eE][-+]?(0|[1-9]\d*))?|(?:true|false)|null))*\s*\]))

    匹配规则完全符合官网规范说明 http://www.json.org
    生成正则时得益于两种思想: 分而治之和递归
    以下是生成正则的代码和简单的测试.

    <?php
    function json_reg() {
        echo '<xmp>';
    
        //基础元素
        $r_int   = '-?\d+'; //整数: 100, -23
        $r_blank = '\s*'; //空白
        $r_obj_l = '\\{'.$r_blank; // {
        $r_obj_r = $r_blank.'\\}'; // }
        $r_arr_l = '\\['.$r_blank; // [
        $r_arr_r = $r_blank.'\\]'; // [
        $r_comma = $r_blank.','.$r_blank; //逗号
        $r_colon = $r_blank.':'.$r_blank; //冒号
    
        //基础数据类型
        $r_str   = '"(?:\\\\"|[^"])+"';  //双引号字符串
        $r_num   = "{$r_int}(?:\\.{$r_int})?(?:[eE]{$r_int})?"; //数字(整数,小数,科学计数): 100,-23; 12.12,-2.3; 2e9,1.2E-8
        $r_bool  = '(?:true|false)'; //bool值
        $r_null  = 'null'; //null
    
        //衍生类型
        $r_key = $r_str; //json中的key
        $r_val = "(?:(?P>json)|{$r_str}|{$r_num}|{$r_bool}|{$r_null})"; //json中val: 可能为 json对象,字符串,num, bool,null
        $r_kv  = "{$r_key}{$r_colon}{$r_val}"; //json中的一个kv结构
    
        $r_arr = "{$r_arr_l}{$r_val}(?:{$r_comma}{$r_val})*{$r_arr_r}"; //数组: 由val列表组成
        $r_obj = "{$r_obj_l}{$r_kv}(?:{$r_comma}{$r_kv})*{$r_obj_r}";   //对象: 有kv结构组成
    
        $reg = "/(?<json>(?:{$r_obj}|{$r_arr}))/is";  //数组或对象
        echo $reg, "\n"; //最终正则表达式
    
        //以下是测试
    
        $str = '
      {
          "_in\"dex" : "log_idx",
          "_type" : "test",
          "_id" : "1",
          "_version" : 1,
          "_shards" : {
             "total" : 2,
             "successful" : 1.3,
             "successful0" : -1.3,
             "successful2" : 1.3e-3,
             "successful4" : 1.3E3,
             "failed" : 0
          },
          "created" : true
       }';
    
    
        preg_match_all($reg, $str, $arr);
        print_r($arr);
    
    }
    
    //调用函数执行
    json_reg();
    展开全文
  • 如何编写一个正则表达式正则表达式由普通字符(例如字符a~z)以及特殊字符(称为元字符)组成文字模式。举例说明:^(?=[b-zB-Z]*[0-9])(?=[0-9]*[a-zA-Z])[a-zA-Z0-9]{12}$此表达式可以匹配的数据格式为:由字母和...

    正则表达式是什么?简单来说,它是人们根据某些特定规则制定的一种规范用以匹配与约束数据。

    如何编写一个正则表达式,正则表达式由普通字符(例如字符a~z)以及特殊字符(称为元字符)组成的文字模式。

    举例说明:

    ^(?=[b-zB-Z]*[0-9])(?=[0-9]*[a-zA-Z])[a-zA-Z0-9]{12}$

    此表达式可以匹配的数据格式为:

    由字母和数字组成的12位数据,字母不区分大小写;并且至少包含一个字母。   

    ^:开始符号修饰符,限制开头数据格式。例:^123 校验文本必须以123开头。

    $:结束符号修饰符。限制结尾数据格式。例:123$  校验文本必须以123开头

    ():是为了提取匹配字符串的,表达式中有几个()就有几个相应的匹配字符串。例:(abc|bcd|cde),表示这一段是abc、bcd、cde三者之一,顺序也必须一致。

    ?=:匹配文本字符串某一段规则。

    *限定符,零次或者多次

    []:取值范围,可以包含数字、字母、特殊符号(需要进行转义)

    {}:限定符,可以设置最小、大或者固定重复几次。

    9965dc34f784ac9f1c46a6ec724cb765.png

    在线正则表达式测试:https://tool.oschina.net/regex/

    正则表达式菜鸟教程:https://www.runoob.com/regexp/regexp-syntax.html

    展开全文
  • """ search()方法用于在整个字符串中搜索第一个...pattern:表示模式字符串,由要匹配的正则表达式转换而来。 string:表示要匹配字符串 flags:可选参数,表示标志位,用于控制匹配格式,如是否区分字母大小写。 ...

    d19103f97499e691b6bef2ce263eb4b5.png
    """
    search()方法用于在整个字符串中搜索第一个匹配的值,如果匹配成功,则返回Match对象,否则返回None.search()方法的语法格式如下:
    re.search(pattern,string,[flags])
    pattern:表示模式字符串,由要匹配的正则表达式转换而来。
    string:表示要匹配的字符串
    flags:可选参数,表示标志位,用于控制匹配格式,如是否区分字母大小写。
    """
    import re
    pattern=r"mr_w+"
    string="MR_SHOP mr_shop"   # 匹配字母数字下划线或汉字
    match=re.search(pattern,string,re.I)
    print(match)
    string="项目名称MR_SHOP mr_shop"
    match=re.search(pattern,string,re.I)   # search()方法在其它位置有符合的匹配也可以进行搜索
    print(match)
    展开全文
  • 正则表达式简介: 正则表达式用于定义一些字符串的规则。 计算机可以根据这些正则表达式,来检查一个... 正则表达式的方法,test()使用这个方法可以用来检查一个字符串是否符合正则表达式的规则。如果符合返回t..
  • JS使用方法创建var reg = new RegExp('abc', 'i'); var reg = /abc/i;使用方法正则对象方法 test:返回true或false exec:返回一个数组,其中存放匹配的结果,如果未找到匹配...match:找到一个或多个正则表达式的匹...
  • 1. 正则表达式规则 1.1 普通字符 ... 字母、数字、汉字、下划线、以及后边章节中...表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。  举例1:表达式 "c",在匹配字符串 "abcde" 时,
  • 字符串正则表达式匹配

    千次阅读 2019-06-12 14:41:33
    表示任意一个字符,而 * 表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。 3. 思路...
  • 譬如我要匹配一个字符串“请拨打110求助”,这个正则不仅要匹配“请拨打110求助”, 也要能匹配包含html标签字符串(中间|去掉,防止被过滤用)如:“请拨打<|span>110<|/span>求助“
  • 一、JS字符串基础 1、字符串长度 2、字符串中某一个指定字符首次出现...•match,找到一个或多个正则表达式的匹配。 •search,检索与正则表达式匹配的值,返回初始下标。 •replace,替换与正则表达式匹配的子串。
  • 字符串——正则表达式匹配

    千次阅读 2017-05-12 18:23:57
    请实现一个函数用来匹配包括’.’和’*’的正则表达式。 模式中的字符’.’表示任意一个字符,而’*’表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。 例如...
  • var str='"sdfsdf123...我需要匹配所有两个双引号之间的内容 ,上面字符串中有3对双引号, 但是我写的正则 只能匹配一个 也就是字符串那一行的所有字符都匹配到了。 无视了中间的双引号。 求各位正则高手指教。
  • Day12 - 字符串正则表达式

    千次阅读 2019-05-03 16:42:48
    在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要,正则表达式就是用于描述这些规则的工具,换句话说正则表达式是一种工具,它定义了字符串的匹配模式(如何检查一个字符串是否有跟某种...
  • javascript字符串匹配正则表达式方法

    万次阅读 2014-03-25 11:49:32
    1、search(reg):该方法返回匹配成功的正则表达式第一次出现在字符串中的位置! var str = "abcd1223abd"; var reg = /\d+/; str.search(reg);//返回一个位置序号:4
  • C#代码: Regex rx = new Regex(@"ABC\w+(?=DE)");  if (rx.IsMatch("AABCfYfDEF"))  { ...该正则匹配同时包含ABC和DE的字符串。 Regex rx = new Regex(@"DATA(\s*)(\w+)(\s*)(\w+)(\s*)(\
  • 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要,正则表达式就是用于描述这些规则的工具,换句话说正则表达式是一种工具,它定义了字符串的匹配模式(如何检查一个字符串是否有跟某种...
  • 数据格式: ...匹配一个","之后也可以Pattern p = Pattern.compile("(?((.*,))).*"); ​匹配两个","之后Pattern p = Pattern.compile("(?((.*,){2})).*"); 这样会报错 怎么匹配两个","之后内容呢?
  • //在匹配字符前后插入字符的正则表达式, //re为匹配字符的正则表达式对象,rp1为前缀,rp2为后缀(可以为空),str为要替换的字符串 function RegInsertStr(re,rp1,rp2,str) { var arr = str.match(re);...
  • 文章目录正则表达式匹配个字符串中间字符串两个字符中间字符串两个字符串中间字符串 两个字符中间字符串 测试用例casetest.txt: <h1>RUNOOB-菜鸟教程</h1> 目的:匹配一个h1,下面是正则...
  • 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:\n\s*\r 评注:可以用来删除空白行 匹配HTML标记的正则表达式:<(\S*?)[^>]*>....
  • 正则表达式用来定义匹配或转化字符串的规则,它们是现在可用的最强大的问题维护工具之一。 常用的元字符:  (1) ^:匹配每一行的开始  (2) .:匹配任何一个单字符。  (3) *:其之前的字符或表达式将重复0次...
  • 但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了 如果不用正则 !strstr($str, “abc”); 就可以解决问题了 但是用正则呢,就只有这样了,”/^((?!abc).)*$/is” //-----------------------
  • 可以认为正则表达式表述了一个字符穿书写规则常用操作正则表达式的方法和委托下面学习一下位于System.Text.RegularExpressions下Regex类一些静态方法和委托1,静态方法IsMatch (返回值是一个布尔类型,用于...
  • 正则表达式 动机: 1.文本处理已经成为计算机的常见工作之 2.对文本内容的搜索,定位,提取是逻辑比较...匹配原理:由普通字符和特殊符号组成的字符串,通过描述字符的重复和位置等行为,达到匹配字符串的目的 ...
  • #笔试#字符串 匹配 正则表达式 C++

    千次阅读 2011-06-02 21:11:00
    T为模板字符串,其中*号代表1到n任意字符,S为匹配字符串。如果匹配 返回TRUE,反之,FALSE。 例如: ab* 和abc匹配 ab* 和acd不匹配 a*bc和 adebc匹配 a*bc和adebce 不匹配 a*bc和a***bc匹配 b*de*c 和...
  • 一个匹配包含指定字符串的html标签的正则表达式,说明如下: ``` 对 错 ``` 上边的两个li标签,我要获取包含‘class="ucqo_g_solution"’这个li里面的内容,求高手赐一个正则表达式,谢谢了。
  • 这里给大家详细讲解一下一个匹配IP地址的正则表达式。 在讲解之前,我先给大家介绍一下,ip地址的生成规则。 IP地址,是由32位数字二进制转为四个十进制的字符串组成。 怎么转化?下面讲解: 二进制:...
  • php不包含某字符串的正则表达式

    千次阅读 2009-12-24 15:01:00
    摘要: 用正则实现包含某个字符串很容易,... 判断一个字符串中是否含有另一字符串,php有很多方法,如下:1. 常见函数strstr($str, "abc"); strstr($str, "abc");2. 正则匹配preg_match("/(abc)/is", $str); preg_
  • 引言String这对于程序原来说...正则表达式简述正则表达式正则表达是Java中比较矛盾知识点,因为使用起来可以很简单也可以相当地有难度,但是对于字符串操作来说应用得当则事半功倍,字符串查找,搜索,匹配...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,577
精华内容 11,030
关键字:

匹配一个字符串的正则表达式