精华内容
下载资源
问答
  • js 如何判断字符串是否是正则表达式?
    千次阅读
    2020-03-30 16:52:48
    eval(text) instanceof RegExp // 返回布尔

     

    更多相关内容
  • 什么是正则表达式?

    千次阅读 2021-06-07 20:48:13
    什么是正则表达式?1. 什么是正则表达式?2. 基本匹配3. 元字符 1. 什么是正则表达式? 正则表达式是⼀组由字⺟和符号组成的特殊⽂本,它可以⽤来从⽂本中找出满⾜你想要的格式的句⼦。 ⼀个正则表达式是⼀种从左到...

    1. 什么是正则表达式?

    正则表达式是⼀组由字⺟和符号组成的特殊⽂本,它可以⽤来从⽂本中找出满⾜你想要的格式的句⼦。

    ⼀个正则表达式是⼀种从左到右匹配主体字符串的模式

    “Regular expression”这个词⽐较拗⼝,我们常使⽤缩写的术语“regex”或“regexp”。

    正则表达式可以从⼀个基础字符串中根据⼀定的匹配模式替换⽂本中的字符串、验证表单、提取字符串等等。

    想象你正在写⼀个应⽤,然后你想设定⼀个⽤户命名的规则,让⽤户名包含字符、数字、下划线和连字符,以及限制字符的个数,好让名字看起来没那么丑。

    我们使⽤以下正则表达式来验证⼀个⽤户名:

    在这里插入图片描述
    以上的正则表达式可以接受 john_doe 、 jo-hn_doe 、 john12_as 。但不匹配 Jo ,因为它包含了⼤写的字⺟⽽且太短了。

    其意思就是用来匹配3到15个都是a到z、0到9、-、_里面的某个字符组成的字符串,开头是、结尾也是。
    在这里插入图片描述

    2. 基本匹配

    正则表达式其实就是在执⾏搜索时的格式,它由⼀些字⺟和数字组合⽽成。

    例如:⼀个正则表达式 the ,它表示⼀个规则:由字⺟ t 开始,接着是 h ,再接着是 e 。

    "the" => The fat cat sat on the mat.
    

    所以它匹配的是the,因为正则表达式是大小写敏感的,所以 the 不会匹配 The。

    又比如正则表达式 123 匹配字符串 123 。它逐个字符的与输⼊的正则表达式做⽐较。

    3. 元字符

    正则表达式主要依赖于元字符。

    元字符不代表他们本身的字⾯意思,他们都有特殊的含义。⼀些元字符写在⽅括号中的时候有⼀些特殊的意思。以下是⼀些元字符的介绍:

    元字符描述
    .句号匹配任意的那个字符除了换行符
    [ ]字符种类。匹配方括号里面的任何字符
    [^ ]否定的字符种类。匹配除了方括号里的任何字符
    *匹配大于等于0个重复的在*号之前的字符
    +匹配>=1个重复的+号前的字符。
    ?标记?之前的字符为可选.
    {n,m}匹配num个⼤括号之前的字符或字符集 (n <= num <= m).
    (xyz)字符集,匹配与 xyz 完全相等的字符串.
    |或运算符,匹配符号前或后的字符.
    \转义字符,⽤于匹配⼀些保留的字符 [ ] ( ) { } . * + ? ^ $ \
    ^从开始⾏开始匹配.
    $从末端开始匹配.

    运算符示例
    正则匹配字符集

    参考:正则表达式深入浅出

    展开全文
  • 1、什么是正则表达式? 简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法。通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤、替换或者输出需要的字符串。linux正则表达式一般以行为单位...
  • 什么是正则表达式? 正则表达式(Regular Expression 或 Regex),是用于定义某种特定搜索模式的字符组合。正则表达式可用于匹配、查找和替换文本中的字符,进行输入数据的验证,查找英文单词的拼写错误等。 调试...
  • 正则表达式?:代表什么意思

    千次阅读 2020-11-19 16:57:08
    每一个正则表达式又可能是由很多子表达式组成,一个()代表一个子表达式,例如([1-9])代表一个子表达式: match() 方法将检索字符串"3yyyyyy",以找到一个与 regexp /([1-9])yy/匹配的文本。 因为 regexp 没有标志 ...

    每一个正则表达式又可能是由很多子表达式组成,一个()代表一个子表达式,例如([1-9])代表一个子表达式:

    match() 方法将检索字符串"3yyyyyy",以找到一个与 regexp /([1-9])yy/ 匹配的文本。

    因为 regexp 没有标志 g,那么 match() 方法就只能在 "3yyyyyy" 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。

    该数组的第 0 个元素 "3yy" 存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本。除了这些常规的数组元素之外,返回的数组还含有两个对象属性。index 属性声明的是匹配文本的起始字符在 stringObject 中的位置,input 属性声明的是对 stringObject 的引用。

    展开全文
  • 方法一: 做项目的时候可能会遇到用js验证表单输入正确性的需求,这时候就需要用到js的正则表达式。举个例子:比如说要验证月份,格式为:’yyyy-MM’,这个正则表达式写起来很简单,实在写不出,也可以Google、百度...
  • 正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配...
  • 什么是正则表达式

    千次阅读 2019-01-31 17:09:50
    最近看了一篇关于正则表达式的学习笔记,觉得讲的非常好,更有图形化的神器相助,想不学会都难,所以想转给大家看看。 话说不是开发为啥要学正则表达式...1.什么是正则表达式 正则表达式,又称正规表示式、正规表...

    最近看了一篇关于正则表达式的学习笔记,觉得讲的非常好,更有图形化的神器相助,想不学会都难,所以想转给大家看看。

    话说不是开发为啥要学正则表达式这种看似很晦涩的东西呢,因为现在很多搜索的场景都是支持正则表达式的,学会了正则表达式就有如一把利剑在手。

    本文较长,建议抽40分钟完整的时间一次读完再慢慢消化。以下是正文(为了适应难度,做了稍许调整)

    1.什么是正则表达式

    正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。

    通俗的讲就是按照某种规则去匹配符合条件的字符串

    2.利用图形化工具理解正则表达式

    辅助理解正则表达的在线工具 https://regexper.com/ 我们利用这个工具辅助理解,正则表达式。语法没懂表着急,后面会有,这里只是学会用工具帮助我们学习。

    手机号正则

    /^1[34578][0-9]{9}$/

    注释:以1开头,第二位为3 4 5 7 9 其中一个,以9位(本身1次加重复8次)0-9数字结尾

    单词边界

    /\bis\b/

    注释: is前后都是单词的边界,比较晦涩难懂?感受下两者的区别,\b 会方道语法部分讲解

    URL分组替换

    /http:(//.+.jpg)/

    看不懂的不要慌语法部分后面会有介绍,这里只是展示利用可视化的图形帮助我们理解正则表达式,可以回来再看木有关系

    正则表达式中括号用来分组,这个时候我们可以通过用$1来获取 group#1的内容

    说下这个正则的意义,如果网站用了https,网站引用静态资源也必须是https,否则报错。如果写成 // 会自动识别 http 或者 https

    日期匹配与分组替换

    /^\d{4}[/-]\d{2}[/-]\d{2}$/

    这个正则比较复杂,画符念咒的地方太多了,一一分析:

    Start of line 是由^生效的表示以此开头

    对应结尾End of line 由$生效表示以此结尾

    接着看digit 由 \d 生效表示数字

    3times 由{4} 生效表示重复4次,开始的时候有疑问,为什么不是 4times 。后来明白作者的用意,正则表达式是一个规则,用这个规则去从字符串开始匹配到结束(注意计算机读字符串可是不会分行的,都是一个串,我们看到的多行,人家会认为是个 \t )这里设计好像小火车的轨道一直开到末尾。digit 传过一次,3times表示再来三次循环,共4次,后面的once同理。 自己被自己啰嗦到了。

    接下来,是 one of 在手机正则里面已经出现了。表示什么都行。只要符合这两个都让通过。

    好了这个正则解释完了,接下来用它做什么呢?

    我们可以验证日期的合法性

    结合URL分组替换所用到的分组特性,我们可以轻松写出日期格式化的方法

    改造下这个正则

    /^(\d{4})/-/-$/

    轻松的可以拿到 group#1 #2 #3 的内容,对应 $1$2$3

    到现在已经能结合图形化工具看懂正则表达式表达式了,如果想自己写,还要在正则语法上下点功夫

    1. 正则表达式语法

    1 修饰符 (三个 g i m)

    修饰符与其他语法特殊,字面量方法声名的时候放到//后,构造函数声明的时候,作为第二个参数传入。整个正则表达式可以理解为正则表达式规则字符串+修饰符

    g:global 执行一个全局匹配

    i:ignore case执行一个不区分大小写的匹配

    m: multiple lines多行匹配

    修饰符可以一起用 const reg =/\bis\b/gim

    来说说他们有什么作用

    有g和没有g的区别

    没有g只替换了第一个,有g 所有的都换了

    有i和没有i的区别

    有i忽略大小写,没有i严格区分大小写

    2 元字符

    正则表达式由两种基本字符组成:

    原义字符

    非打印字符

    元字符 (* + ? $ ^ . | \ ( ) { } [ ])

    1. 原义字符

    这个没什么好解释的,我们一直在举例的 /is/ 匹配字符串’is’

    \将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,n”匹配字符“n”。“\n”匹配一个换行符。序列“\”匹配“\”而“(”则匹配“(”。

    1. 非打印字符

    字符

    描述

    \cx

    匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。

    \f

    匹配一个换页符。等价于 \x0c 和 \cL。

    \n

    匹配一个换行符。等价于 \x0a 和 \cJ。

    \r

    匹配一个回车符。等价于 \x0d 和 \cM。

    \s

    匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。

    \S

    匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。

    \t

    匹配一个制表符。等价于 \x09 和 \cI。

    \v

    匹配一个垂直制表符。等价于 \x0b 和 \cK。

    非打印字符,以\n为例

    其他的在前端引用比较少,应该在后端处理文本文件的时候会用到

    1. 字符类 []

    在前面的手机号正则例子中,我们已经使用过[] /^1[34578][0-9]{9}KaTeX parse error: Expected group after '^' at position 43: …在日期匹配与分组替换例子中 /^̲\d{4}[/-]\d{2}[…/ 表示符合 /- 都可以

    1. 字符类取反 [^]

    表示不属于此类

    空格也不属于,好多狗

    1. 范围类[-]

    正则表达式支持一定范围规则比如 [a-z][A-Z][0-9] 可以连写[a-z0-9] 如果你只是想匹配-在 范围类最后加-即可。请看实例。

    1. 预定义类

    常用为了方便书写

    字符

    等价类

    含义

    .

    [^\n\r]

    除了回车符和换行符之外的所有字符

    \d

    [0-9]

    数字字符

    \D

    [^0-9]

    非数字字符

    \s

    [\t\n\x0B\f\r]

    空白符

    \S

    [^\t\n\x0B\f\r]

    非空白符

    \w

    [a-zA-Z_0-9]

    单词字符(字母、数字、下划线)

    \W

    [^a-zA-Z_0-9]

    非单词字符

    有了这些预定义类,写一些正则就很方便了,比如我们希望匹配一个 ab+数字+任意字符 的字符串,就可以这样写了 /ab\d./

    1. 边界

    字符

    含义

    ^

    以xx开头

    $

    以xx结尾

    \b

    单词边界,指[a-zA-Z_0-9]之外的字符

    \B

    非单词边界

    边界顾名思义即定义匹配的边界条件,上面基本都在前面的例子碰到了,这里演示下\b与\B的区别

    1. 量词

    字符

    含义

    ?

    出现零次或一次

    出现零次或多次(任意次)

    出现一次或多次(至道一次)

    {n}

    对应零次或者n次

    {n,m}

    至少出现n次但不超过m次

    {n,}

    至少出现n次(+的升级版)

    {0,n}

    至多出现n次(其实就是{n,m} 方便记忆而已)

    如果没有量词,要匹配4位数字这样写就可以/\d\d\d\d/, 如果匹配50位100位呢?那不是要疯掉了?

    有了量词,就可以这样写/\d{100}/, 量词的使用我们在手机号中使用过,表现在可视化中就是循环多少次。

    凑一个上面都包含的实例/\d?@\d*@\d+@\d{10}@\d{10,20}@\d{10,}@\d{0,10}/

    11.贪婪与懒惰(非贪婪)

    正则表达式默认会匹配贪婪模式,什么是贪婪模式呢?如其名尽可能多的匹配。我们看个例子。

    /\d{3,6}/

    贪婪模式下,匹配的了最多的情况。

    与贪婪对应就是懒惰模式,懒惰对应的就是匹配的尽可能少的情况。如何开启懒惰模式? 在量词后面加?。继续上面的例子

    /\d{3,6}?/

    如果想知道,正则表达式是如何匹配量词的,请看 进阶正则表达式 文中有介绍,正则是如何回溯的。

    12.分组与反向引用

    分组,又称为子表达式。把正则表达式拆分成小表达式。概念枯燥,说个例子为嘛用分组:

    不分组 /abc{2}/

    量词仅作用到最后的c

    分组 /(abc){2}/

    注意这里 group #1

    分组虽然和运算符() 很像,但是分组在正则表达式中,注意理解组的含义。经常有人滥用分组

    /^(http|https)/ 真的需要这样么?其实 /^https?/就可以了,你正则写的特别长的时候,会出现一堆没用的结果,看着都头疼吧。

    分组往往和反向引用一起使用,别被概念吓到:当一个正则表达式被分组后,每个分组自动被赋予一个组号,一左到右分别是 $1$2…

    再把之前的例子拿出来

    /^(\d{4})/-/-$/

    轻松的可以拿到 group#1 #2 #3 的内容,对应 $1$2$3

    如果在反向引用中不想捕获年该如何操作? 加上 ?:即可

    /^(?:\d{4})/-/-$/

    12.前瞻

    这部分为进阶部分—选看

    正则表达式中有前瞻(Lookahead)和后顾(Lookbehind)的概念,这两个术语非常形象的描述了正则引擎的匹配行为。需要注意一点,正则表达式中的前和后和我们一般理解的前后有点不同。一段文本,我们一般习惯把文本开头的方向称作“前面”,文本末尾方向称为“后面”。但是对于正则表达式引擎来说,因为它是从文本头部向尾部开始解析的(可以通过正则选项控制解析方向),因此对于文本尾部方向,称为“前”,因为这个时候,正则引擎还没走到那块,而对文本头部方向,则称为“后”,因为正则引擎已经走过了那一块地方。

    注意:后顾性能损耗比较大,js只支持前瞻(知乎上看到的,具体原因不详)

    上面的比较概念话,尝试用大白话讲讲,就说皇上选妃吧,先行条件得是美女吧,长得“如花”那样皇上可不要,漂亮这关过了,皇上想要这个美女也不行,皇室有规矩,必须是贵族血统。

    那么“漂亮”就是正常的匹配,匹配到了,还得看看家室是不是贵族。"贵族"相当于前瞻条件

    前瞻分两种一种是正向前瞻(?=xxx), 另一种是负向前瞻(?!xxx)

    展开全文
  • 刚开始复习一下,什么是正则表达式? 在编写处理字符串的程序或网页时,经常有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 php密码...
  • 家庭住址正则表达式

    2018-12-22 22:16:44
    比较准确的判断家庭住址是否正确,较网上的更新了,简单明了方便使用
  • 正则表达式不区分大小写Regex is used given text according to different and flexible patterns. It provides a lot of different patterns which can match given text or line. The default behavior of the ...
  • 正则表达式?* +的区别

    千次阅读 2019-05-24 14:26:32
    :匹配前面的子表达式0次或1次 *:匹配0次或多次,即任意次 +:匹配1次或多次 >>> s = 'fooooo' >>> re.findall('o?',s) ['', 'o', 'o', 'o', 'o', 'o', ''] >>> re.findall('o*',s) ['', 'ooooo', ''] >>> re....
  • 根据正则表达式反向生成测试数据
  • 正则表达式?: ?! ?=

    千次阅读 2018-08-22 19:22:33
    前瞻: exp1(?=exp2) 查找exp2前面的exp1 后顾: (?&lt;=exp2)exp1 查找exp2后面的exp1 负前瞻: exp1(?!exp2) 查找后面不是exp2的exp1 ...()表示捕获分组,()会把每个分组里的匹配的值保存起来,使用$n(n是一个...
  • 正则表达式 ?P<name>

    万次阅读 多人点赞 2018-08-27 10:29:21
    import re # 将匹配的数字乘以 2 def double(matched): value = int(matched.group('value')) return str(value * 2) s = 'A23G4HFD567' print(re.sub('(?P&lt;value&gt;\d+)', double, s)) ...的意...
  • 正则表达式判断密码强度是否符合标准,此处具有大小写,特殊字符,数字判断。对密码周期也进行判断。
  • 我需要一些帮助来声明正则表达式。我的输入如下:this is a paragraph with in between[1> and then there are cases ... where the number ranges from 1-100[99>.and there are many other lines in the txt...
  • 正则表达式手册.pdf

    2018-01-04 17:44:50
    正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式
  • 使用正则表达式验证中文汉字输入,程序完全可以运行调试,方便大家参考
  • 正则表达式作用

    千次阅读 2020-10-27 14:40:59
    正则表达式什么正则表达式的用途?正则表达式的分类? 定义:正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,简单来说,是一种匹配字符串的方法,通过一些特殊符号,实现快速查找、...
  • js 正则表达式 (?[\d])

    千次阅读 2020-10-16 10:31:06
    正则表达式学习笔记 目录 正则表达式学习笔记 文章目录 正则表达式 :(?<=[\d]) 一、((?<=\d)\d{3})+ 二、千位分隔符 千位分隔符,其实就是数字中的逗号,每隔三位数加一个逗号,增强可读性 正则...
  • IP 正则表达式验证

    2020-12-12 21:02:12
    您可能感兴趣的文章:javascript 手机号码正则表达式验证函数JS正则表达式验证数字代码JavaScript正则表达式验证身份证号码是否合法(两种方法)jquery正则表达式验证(手机号、身份证号、中文名称)邮箱地址正则...
  • 允许的话要再加上A-Z,所以你可以改这样试试:"^[0-9]+[a-zA-Z]+[0-9]+$"如何用正则表达式表达以数字开头的字符串\b\d\S+用js的正则表达式检测电话号码,要求,必须是1开头,只能是数字,并且是11位数字,这儿正则...
  • 正则表达式(?p<name>group)

    千次阅读 2018-09-14 13:10:05
    正则表达式 (?pgroup)这个正则的意思是,给匹配到的数字命名一个组名name,这个组名必须是唯一的。 另一种是正则匹配使用group(组名)可以获取到这个组名下的数据,同group(1),group(2)类似 eg: (?p\d{2})...
  • 正则表达式中?=和?:和?!的理解

    万次阅读 多人点赞 2018-07-25 18:01:56
    要理解?=和?!,首先需要理解前瞻,后顾,负前瞻,负后顾四个概念: 前瞻: exp1(?=exp2) 查找exp2前面的exp1 后顾: (?&lt;=exp2)exp1 查找exp2后面的exp1 负前瞻: exp1(?....replace(/(...
  • 正则表达式(?=pattern)(?!pattern)(?:pattern)的理解 学习JAVA正则表达式时,(?=pattern)(?!pattern)(?:pattern)这类东西看着就挺难理解,而且官方释义更是越看越不懂。查阅资料后,总结如下。 环视 (?=...
  • Qt 正则表达式例程

    2014-12-19 22:52:07
    Qt正则表达式例程,包含字符串搜索、字符串替换等。配合博文http://blog.csdn.net/lankin2013/article/details/41989961 Qt的正则表示类是QRegExp,在很多情况下都可以用到,比如字符串验证、字符串搜索、搜索并替换...
  • 正则表达式?由两个字母开头,然后是年和月,如:ru1509, ca1312, 后面是年,和月,哪位大神指导指导
  • VBA中的正则表达式

    2014-12-23 18:22:58
    VBA中的正则表达式,正则表达式的基本知识讲解!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 802,222
精华内容 320,888
关键字:

什么是正则表达式?