关于正则表达式:Redis的底层类型之geo

geoGEOADD GEOADD key [NX | XX] [CH] longitude latitude member [longitudelatitude member ...]key:指定要增加地理信息的有序汇合的键名。 longitude 和 latitude:示意地理位置的经度和纬度。通常应用双精度浮点数示意。 member:与地理位置相关联的成员名称。 GEODISTGEODIST key member1 member2 [unit]key:指定要查问地理位置信息的有序汇合的键名。member1 和 member2:示意两个地理位置成员的名称,用于计算它们之间的间隔。unit(可选):指定间隔的单位,默认为米(m)。你能够应用以下单位之一:米(m)、千米(km)、英里(mi)或英尺(ft)。 GEOHASHGEOHASH key member [member ...]GEOHASH 是 Redis 用于获取指定地理位置成员的 Geohash 值的命令。Geohash 是一种用于将地理位置坐标编码为字符串的办法,能够用来示意地理位置的精度和范畴。 GEOPOSGEOPOS 是 Redis 用于获取指定地理位置成员的经纬度坐标的命令。 GEORADIUSGEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]key:蕴含地理位置信息的有序汇合的键名。longitude:查问中心点的经度。latitude:查问中心点的纬度。radius:查问半径范畴,以间隔单位(m、km、ft、mi)为单位。[WITHCOORD]:可选参数,返回成员的经纬度坐标。[WITHDIST]:可选参数,返回成员与查问中心点的间隔。[WITHHASH]:可选参数,返回成员的哈希值。[COUNT count]:可选参数,限度返回的成员数量。[ASC|DESC]:可选参数,指定返回后果的排序程序。[STORE key]:可选参数,将后果保留到指定的键名中。[STOREDIST key]:可选参数,将后果保留到指定的键名中,并蕴含成员间隔信息。GEORADIUS 是 Redis 用于执行地理位置范畴查问的命令。它容许你查找指定地理位置汇合中,间隔给定坐标点肯定范畴内的成员。 GEORADIUS_ROGEORADIUS_RO 是 Redis 的一个扩大命令,通常用于在进行只读的地理位置查问时应用。与规范的 GEORADIUS 命令相比,GEORADIUS_RO 具备以下特点: 只读操作:GEORADIUS_RO 是只读操作,不会对 Redis 的数据集产生写入影响。 ...

September 25, 2023 · 1 min · jiezi

关于正则表达式:JAVA中正则表达式的应用-javautilregex篇

当初JDK1.4里有了本人的正则表达式API包,JAVA程序员能够免去找第三方提供的正则表达式库的周折了,咱们当初就马上来理解一下这个SUN提供的迟来恩物- -对我来说的确如此。 1.简介:java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包含两个类:Pattern和Matcher一个Pattern是一个正则表达式经编译后的体现模式。一个Matcher对象是一个状态机器,它根据Pattern对象做为匹配模式对字符串开展匹配查看。 首先一个Pattern实例订制了一个所用语法与PERL的相似的正则表达式经编译后的模式,而后一个Matcher实例在这个给定的Pattern实例的模式管制下进行字符串的匹配工作。以下咱们就别离来看看这两个类: 2.Pattern类:Pattern的办法如下:static Pattern compile(String regex) 将给定的正则表达式编译并赋予给Pattern类static Pattern compile(String regex, int flags) 同上,但减少flag参数的指定,可选的flag参数包含:CASE INSENSITIVE,MULTILINE,DOTALL,UNICODE CASE, CANON EQint flags() 返回以后Pattern的匹配flag参数.Matcher matcher(CharSequence input) 生成一个给定命名的Matcher对象static boolean matches(String regex, CharSequence input) 编译给定的正则表达式并且对输出的字串以该正则表达式为模发展匹配,该办法适宜于该正则表达式只会应用一次的状况,也就是只进行一次匹配工作,因为这种状况下并不需要生成一个Matcher实例。String pattern() 返回该Patter对象所编译的正则表达式。String[] split(CharSequence input) 将指标字符串依照Pattern里所蕴含的正则表达式为模进行宰割。String[] split(CharSequence input, int limit) 作用同上,减少参数limit目标在于要指定宰割的段数,如将limi设为2,那么指标字符串将依据正则表达式分为割为两段。一个正则表达式,也就是一串有特定意义的字符,必须首先要编译成为一个Pattern类的实例,这个Pattern对象将会应用matcher()办法来生成一个Matcher实例,接着便能够应用该 Matcher实例以编译的正则表达式为根底对指标字符串进行匹配工作,多个Matcher是能够共用一个Pattern对象的。 当初咱们先来看一个简略的例子,再通过剖析它来理解怎么生成一个Pattern对象并且编译一个正则表达式,最初依据这个正则表达式将指标字符串进行宰割: import java.util.regex.*;public class Replacement{ public static void main(String[] args) throws Exception { // 生成一个Pattern,同时编译一个正则表达式 Pattern p = Pattern.compile("[/]+"); //用Pattern的split()办法把字符串按"/"宰割 String[] result = p.split("Kevin has seen《LEON》seveal times,because it is a good film." +"/ 凯文曾经看过《这个杀手不太冷》几次了,因为它是一部" +"好电影。/名词:凯文。"); for (int i=0; i<result.length; i++) System.out.println(result[i]); }}输入后果为: ...

May 5, 2023 · 3 min · jiezi

关于正则表达式:用这个正则校验密码真的可以吗

问题背景最近帮共事解决了一个正则问题,挺有意思,分享给大家 背景是共事在做一个用户注册相干的性能,甲方提出了一些对明码复杂度的要求,要求长度8-32位,小写字母,大写字母,数字,符号四种必须都有,上面是匹配明码的最后的正则表达式 (?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[^a-zA-Z0-9]).{8,32}问题验证大家能够看一下这个正则,感觉一下用这个正则可能满足下面的明码校验要求吗?能够花一点工夫想一想 答案是:不能 咱们来做个简略的测试,倡议找一个在线工具,理论测试一下 把表达式输出进去,咱们测如下几段文本 abc123A:没有匹配,长度不够abcd12345:没有匹配,复杂度不够,没有大写和符号abcdA123-:可能失常匹配,长度合乎,复杂度合乎那这不是阐明这个正则是OK的吗?咱们再测上面这个文本 abcdA123-我:这怎么也匹配了abc他dA★123:这怎么也匹配了问题改良这个正则外面有两个小问题 符号限定过于宽泛:(?=.*[^a-zA-Z0-9])这个判非就把其余所有字符都囊括进来了没有输出文本的限定:.{8,32}这个点也囊括了除换行以外的所有字符针对下面两个问题改良一下这个正则,首先要枚举咱们容许呈现的符号,假如咱们只容许呈现 “-_” 这两个字符 改良后的正则如下 ^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[-_])[0-9a-zA-Z-_]{8,32}$这个问题一方面是不足测试验证,但更深层的起因其实是对正则不够理解,不能疾速发现正则的问题,下一节咱们就来看看这个正则外面比拟艰难的局部 扩大浏览可能有同学有疑难后面这么一大堆括号是干什么的 这里温习一下正则表达式的一个根底概念:零宽断言 零宽断言是一种零宽度的匹配,它匹配到的内容不会保留到匹配后果中去,最终匹配后果只是一个地位而已。 (?=)就是一种零宽断言,叫做正向后行断言,次要作用是匹配表达式前面的内容 比方:\d(?=px),这个正则能匹配到1px中的1,不会匹配到2pm中的2,因为2前面跟的不是px,如果想同时把px也匹配上,那就得写\d(?=px)px,这看起来就跟\dpx一样了,在匹配单个条件的时候确实没有区别,但匹配多条件的时候就不一样了 咱们还是用例子来解释一下 [a-z0-9]{4,10}这样一个正则能示意英文小写和数字呈现4-10次,但不能要求必须同时有英文和数字,能够是纯英文,也能够是纯数字 正则是一种程序性的描述性语言,1a和a1是不同的,如果想形容这种不确定地位的组合,对于一般正则写法来说是比拟艰难的,根本就变成了排列组合了 这时咱们就能够通过正向后行断言来帮忙进行匹配,正向后行断言能够了解成对字符串的模式匹配 (?=.*[a-z])示意前面必须呈现一个英文小写,然而地位能够不定,应用.*来表白地位不定这个信息同理(?=.*[0-9])示意前面必须呈现一个数字,然而地位能够不定[a-z0-9]{4,10}限定输出内容和长度(?=.*[a-z])(?=.*[0-9])[a-z0-9]{4,10}连贯在一起就能示意英文小写和数字呈现4-10次,且英文和数字都必须至多呈现一次

April 2, 2023 · 1 min · jiezi

关于正则表达式:正则表达式那些事基础篇

基本概念正则表达式中的元素由字符和元字符组成。字符又叫做一般字符即一般的计算机编码,如咱们罕用的英文字符、数字、中文等等;元字符又被称为特殊字符即在正则表达式中存在非凡意义的字符,如\、*、$等等,详情可见MDN 文档。 精准匹配正则表达式与指标字符一对一匹配。波及:\当咱们想匹配a字符,正则表达式能够间接写成/a/。然而匹配的是元字符时,如$,间接写成/$/是无奈匹配到胜利的,因为$在正则中存在非凡意义,此时咱们须要应用\对元字符进行本义,即打消元字符的非凡意义,要想匹配$可写成/\$/。个别一般字符在\的润饰下也会领有非凡含意,如\n(换行)、\r(回车)等等。 ✒ 小结:匹配一般字符:/一般字符/;匹配元字符:/\元字符/;匹配特定字符:/\个别一般字符/。 正则表达式形容&举例关联/一般字符/匹配一般字符-/\元字符/匹配元字符-/\n/匹配换行符(LF)换行和回车/\r/匹配回车符(CR)换行和回车/\f/匹配换页符-/\t/匹配制表符(Tab)-/\v/匹配垂直制表符-多字匹配正则表达式之所以弱小,就是其能进行含糊匹配。应用汇合、区间和通配符的形式实现一对多的匹配,实现字符含糊。波及:[]、-、通配符汇合如果咱们想同时匹配 1 到 9 之间全副的奇数,如果应用精准匹配必定无奈满足以后的要求,此时咱们能够应用用汇合的形式来解决,应用[]元字符将须要匹配的字符全副列举进去,这时的正则能够写成/[13579]/; /[13579]/.test("1"); // true/[13579]/.test("2"); // false区间当咱们想要同时匹配大于 4 的数字时,应用汇合的形式能够写成/[56789]/,看着其实还好,然而如果要求同时匹配全副小写字母呢,全副列举进去必定是不迷信的,这时咱们须要想到区间的写法。当咱们想要同时匹配一段间断的数字、字母或者中文时咱们能够应用区间的写法,上述问题能够写成/[5-9]/。 /[a-z]/:同时匹配所有小写字母;/[\u4e00-\u9fa5]/:同时匹配全副汉字;/[\u4e00-\u9fa5]/.test("我"); // true/[\u4e00-\u9fa5]/.test("I"); // false通配符在开发中时常会遇到仅容许用户输出数字的场景,用区间形式可写成/[0-9]/,然而区间的写法相对来说还是比拟低效,所以正则提供更简便的写法:通配符写法,应用\d通配符即可同时匹配 0 至 9 的数字,所以懈怠才是人类文明提高的真正能源呀; /\d/.test("1"); // true/\d/.test("壹"); // false汇合、区间和通配符并不是水火不容的,当他们同时存在时会取它们的并集,现想同时匹配全副数字、全副小写字母以及_,可间接写成/[\da-z_]/ /[\da-z_]/.test("a"); // true/[\da-z_]/.test("A"); // false✒ 小结:汇合写法:/[列举字符]/;区间写法:/[开始-完结]/;通配符写法:/通配符/。 正则表达式形容&举例关联/[13579]/[]列举的全副字符-/[5-9]/[]内区间的全副字符-/\d/0 至 9 之间的字符等价于[0-9]/\D/0 至 9 以外的任何字符等价于 [^\d]/\w/0 至 9、a 至 z、A 至 Z 以及\_等价于 [a-zA-Z_\d]/\W/0 至 9、a 至 z、A 至 Z 以及\_以外字符等价于 [^\w]/\s/全副空白字符,如:<br/>空字符、\n、\r、\f、\t、\v等价于[\n\r\f\t\v ]/\S/全副非空白字符等价于[^\s]/./除\n 和\r 以外的全副字符等价于[^\n\r]次数限定依据多字匹配一节咱们写成的正则能够匹配某一类字符,然而匹配的长度仍然是固定的,本节就来讲讲设置字符反复的次数,实现长度含糊。波及:?、{}、*、+?元字符咱们常见的传输协定有两种:http 和 https,如果咱们现想写一个同时匹配这两种协定的正则该如何写呢?剖析一下需要:http 后有没有 s 都能匹配胜利,这时咱们能够应用?这一元字符润饰s,示意s可匹配 0 次或者 1 次。正则能够写成/https?/。 ...

March 16, 2023 · 3 min · jiezi

关于正则表达式:10分钟入门想学爬虫关于正则表达式看这一篇就够了

最近接触到正则表达式,用于匹配对应的字符串,感觉很神奇,于是开始一个学习。 有句老话说得好:“爬虫写得好,牢范吃得饱。”哈哈哈当然是开个玩笑。工具举荐regex101: build, test, and debug regex这个网站能够帮忙咱们实时地测试RegExp(正则表达式),前面的教程都在这个平台上进行。 RegEx中各种符号的用法要学习RegEx首先要学会各种符号的用法。 1.限定符限定符仅作用与右边一个字符,或右边的一块表达式。 ? 示意能够呈现0次或1次,也就是可有可无+ 示意能够呈现1次或屡次* 示意能够呈现任意次{x} 示意必须呈现x次,{l, r} 示意呈现次数必须在闭区间[l, r]之间,能够省略一个,下界默认为0,上界默认无穷如果我要在一些字符中找出以a结尾,以c结尾,两头有若干个b的字符串,能够像上面这样写: 也能够这样写: 不难发现,后面的这些?+*都能够用{}来表白,不过为了不便就会用后面的示意。 2.“或”运算在简直所有编程语言中都有或运算来示意一个不太好一步示意的逻辑汇合,在RegExp中也能够。 符号:| 能够将左右两个表达式取并集作为新的表达式,但优先级低于表达式的拼接 比方我要失去所有的a和an,就能够像上面这样写。留神两边要用括号和\b包围起来,\b确保这是一个单词而不是一个单词的一部分,括号是为了避免把"\ba"和"an\b"作为两个表达式,咱们的表达式应该是a和an。 3.字符类格局:[abc]示意这一位能够是abc中的任意字符,也能够用区间来示意,比方[a-z]示意这一位能够是一个小写字母,[a-zA-Z0-9]+示意这里能够是一个或多个“大写字母或小写字母或数字”。 举个例子,我要匹配所有格局为"班级+学号"中找出所有zy02班的人,能够像下图这样做。 如果要找出所有jsj1班到3班的,能够像上面这样做。 这里的\d和[0-9]等价。值得注意的是这里的非法学号jsj0100没有被匹配到。 也能够在 [ ] 的结尾增加一个 ^ 字符,示意排除。 4.元字符\d 示意数字\D 示意非数字\w 示意字母、数字和下划线\W 示意非字母、数字和下划线\s 示意空白字符\S 示意非空白字符^ 匹配行首$ 匹配行尾5.贪心匹配与懈怠匹配RegExp默认匹配模式为贪心匹配,也就是尽可能长。 如果我在一段HTML中想要匹配出每一个<>标签,如果像上面这样写,会把整个文档作为一个长字符串匹配。 这显然不是咱们想要的后果,咱们就能够利用?来改为懈怠匹配。 修饰符援用一段菜鸟教程的文章《正则表达式 – 修饰符(标记) | 菜鸟教程》,间接偷懒一手。 个别会用/g,示意global全局搜寻。 在Python中应用RegExpython须要先引入re库,这是一个很弱小的字符串匹配库。 咱们利用re.search(pattern, string[, flags])来做匹配,会返回一个后果组成的元组,如果没找到返回None,罕用于判断。 如果我要在python中辨认一段式子是一个正数,还是一个表达式时,能够这样匹配: 再举个例子,如果我要在一段html中找出所有a标签,能够像上面这样做,,re.findall返回一个list。 本文完结啦,感激大家的浏览,如果本文对你有用的话欢送点赞珍藏和关注!

March 16, 2023 · 1 min · jiezi

关于正则表达式:正则表达式是如何运作的

本文作者:时浅写在后面在日常的开发工作当中,咱们必不可免的会碰到须要应用正则的状况。 正则在很多时候通过不同的组合形式最初都能够达到既定的指标后果。比方咱们有一个须要匹配的字符串:<p>hello</p>,咱们能够通过 /<p>.*<\/p>/ 以及 /<p>.*?<\/p>/ 来匹配,两种形式就像就像中文语法中的陈述句以及倒装句,不同的语序往往不影响咱们的了解,然而他们的运作形式却齐全不一样。 为了让大家有一个更加直观的感触,这里将 <p>hello</p> 分三次存到一份百万字符文档的最后面,两头以及最初面,而后别离应用下面的 2 个正则表达式进行匹配,并测算匹配到对应字符所须要的工夫,后果如下(试验后果通过 https://regexr.com/ 得出): 最后面两头最初面/<p>.*<\/p>/1.1ms0.7ms0.2ms/<p>.*?<\/p>/0.1ms0.2ms0.3ms由此咱们能够显著地看出不同的撰写形式,匹配的效率也有很大的不同。 撰写正则是一个一直思考与抉择的过程。就像一道数学题中往往蕴含一种或几种最优解的可能,想要趋近这个后果,就须要咱们理清题意,把握正则的表达方式以及增强对正则运作形式的了解。 那么,咱们应该如何趋近最优解,养成良好的撰写习惯,锤炼撰写强壮的正则表达式的能力呢? 知己知彼,百战不殆,要写好正则表达式就须要做到知其然还要知其所以然。因而,本文将尝试从正则原理的角度登程,介绍正则匹配的规定,梳理正则与无限自动机的关系、及无限自动机之间的转化逻辑,并解释回溯等相干概念。心愿可能帮忙大家更好地了解及应用正则。 正则表达式与无限自动机(FA)正则表达式是建设在 无限自动机 ( Finite Automaton ) 的实践根底上的,是自动机实践的利用。当咱们写完相干的表达式之后,正则引擎会依照咱们所写的表达式构建相应的自动机,若该自动机承受输出的文本并到达最终状态,则示意输出的文本能够被咱们所写的正则表达式匹配到。 无限自动机的图示自动机的图形化蕴含以下元素: 箭头:示意门路,能够在下面标注字母,示意状态 1 通过该字母能够转换到状态 2 (也能够是标注 ,即空串,示意无需通过转换就能够从状态 1 过渡到状态 2),单圆圈:示意非完结的中间状态双圆圈:示意完结状态由本身指向本身的箭头:用于示意 Kleene 闭包(也就是正则表达式中的 *),指能够走任意次数的门路。以 ab*c 这条正则表达式为例,其无限自动机的图示如下,示意状态 1 通过 a 能够过渡到状态 2 ,在状态 2 能够通过 再循环通过 b 也能够不通过 b 而间接通过通过 再经由 c 过渡到最终的完结状态。 不确定无限自动机(NFA)及确定无限自动机(DFA)无限自动机又能够分为 NFA:不确定无限自动机(Nondeterministic Finite Automaton )及 DFA:确定无限自动机(Deterministic Finite Automaton ),NFA 的不确定性体现在其状态能够通过 转换 以及对同一个字符能够有不同的门路。而 DFA 能够看作是一种非凡的 NFA,其最大的特点就是确定性,即输出一个字符,肯定会转换到确定的状态,而不会有其余的可能。 ...

February 23, 2023 · 4 min · jiezi

关于正则表达式:正则表达式判断是否可转为数值是否有首尾空格

是否为可用数值(验证输出是否为一个数值型,能够在类型转换后进一步的运算):const numericalReg = /^-?([1-9][\d]{0,7}|0)(\.[\d]+)?$/;//{0,7}限度8位console.log(numericalReg.test(001230))//trueconsole.log(numericalReg.test(33))//trueconsole.log(numericalReg.test(-33))//trueconsole.log(numericalReg.test('-0.33'))//trueconsole.log(numericalReg.test('0'))//trueconsole.log(numericalReg.test(0.12))//trueconsole.log(numericalReg.test(NaN))//falseconsole.log(numericalReg.test(12345678))//trueconsole.log(numericalReg.test(123456789))//falseconsole.log(numericalReg.test('12s'))//falseconsole.log(numericalReg.test(''))//false是否有首尾空格(个别为校验输入框的内容有效性,相似trim):const trimReg = /^\S.*\S$|(^\S{0,1}\S$)/;console.log(trimReg.test('123'))//trueconsole.log(trimReg.test(' 123 '))//false

January 21, 2023 · 1 min · jiezi

关于正则表达式:百度工程师带你玩转正则

作者 | 背阴 导读 在很多技术畛域,都有正则的身影。但许多像我一样的人,只闻其名。因而将正则罕用常识汇总,便于查阅。正则表达式(Regular Expression)是用于形容一组字符串特色的模式,用来匹配特定的字符串。通过特殊字符+一般字符来进行模式形容,从而达到文本匹配目标工具。因而正则表达式是用于匹配字符串中字符组合的模式。 正则表达式能够很不便的提取咱们想要的信息,所以正则表达式是一个很重要的知识点!欢送大家一起学习~ 全文4082字,预计浏览工夫11分钟。 01 正则概述正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象。 02 根本语法2.1 定义形式字面量形式:/^\d+$/g, new RegExp("^\\d+$", "g") 2.2 修饰符 2.3 元字符一个正则表达式模式是由简略的字符所形成的,比方 /abc/;或者是简略和特殊字符的组合,比方 /ab*c/ 2.4 其余断言断言的组成之一是边界。对于文本、词或模式,边界能够用来表明它们的起始或终止局部,分为边界类断言与其余断言。边界类断言有 ^, $, \b, \B,其余断言有 x(?=y), x(?!y), (?<=y)x, (?<!y)x。 注:须要关注写法与真正匹配到的字符串!!! 03 正则对象的属性和办法3.1 属性 △正则属性和办法 var reg=/ab/g;reg.ignoreCase; // false,检测是否含有i 属性reg.global; // true,检测是否含有g 属性reg.multiline; // false,检测是否含有m 属性reg.source; // "ab",匹配内容体var regex =new RegExp("\u{61}","u");regex.unicode // trueconst str1 = "foo bar foo";const regex1 = /foo/dg;regex1.hasIndices // Output: trueregex1.exec(str1).indices[0] // Output: Array [0, 3]regex1.exec(str1).indices[0] // Output: Array [8, 11]const str2 = "foo bar foo";const regex2 = /foo/;regex2.hasIndices // Output: falseregex2.exec(str2).indices // Output: undefined3.2 相干办法这些模式被用于RegExp的exec和test办法,以及String的match、matchAll、replace、search和split办法。 ...

January 12, 2023 · 2 min · jiezi

关于正则表达式:正则表达式学习笔记

从文本中提取数据须要用到正则表达式,以前看过一点,但随着不必很快又遗记了。这次又看了一下,记录一下要点:总体能够分为几类,代表字符的、示意反复的、示意分界的、示意分组的代表字符:.能够代表出换行之外的任意一个字符,留神是一个字符![]中括号内字符能够任意匹配其中一个字符,比方[0-9]示意匹配任意一个数字代表字符的省略用法:\d等价于[0-9],其大写示意相同:\D示意非数字,等价于1\s匹配任意空字符,等价于[ \t\n\r\f]还有一些写法,可参考:https://www.runoob.com/python... 代表反复:*示意反复0-n个其后面的表达式内容+示意反复1-n个其后面的表达式内容?示意反复0-1个其后面的表达式内容{n}示意反复n个其后面的表达式内容,还有{n,}、{n,m} 代表分界^示意开始$示意完结 代表分组(re)括号代表分组,并记住re代表的匹配内容。如果有多个分组,返回时会把内容放在嵌套的元组中返回。 断言示意零宽度断言如下: ?= 正后行断言-存在?! 负后行断言-排除?<= 正后发断言-存在?<! 负后发断言-排除图片参考https://blog.csdn.net/fd2025/... 另外有一个在线的正则表达式测试工具,在剖析文本法则时,能够借助应用,网址是:菜鸟工具https://c.runoob.com/front-en...这篇文章讲的比拟具体,能够参考:https://blog.csdn.net/fd2025/... 0-9 ↩

December 19, 2022 · 1 min · jiezi

关于正则表达式:-regexlearncom游戏化方式学正则语义化css|i18n

regexlearn.com 游戏化形式学正则regexlearn是一个学习正则的开源网站,用户能够通过相似闯关的形式学习正则表达式,亲测包教包会! 先来简略看一看它长什么样子 ⬇️ 目前站内的外围性能是学习正则表达式,它会通过题目和一句话教学疏导你应用正则表达式匹配指定的词句,难度梯度把握的很好。 更重要的是,这个站,尽管很简略,但真的很难看 好喜爱 所以咱们先来看看它为什么给人感觉还不错? UE Design黑绿配色它的背景的彩色不是#000的纯黑,而是灰灰的#282c34,前景色则是不同透明度的rgb(95 245 155),留神,这个绿不是一般的绿,而是王维诗里的绿带点赛博朋克的荧光却不死亡绿。 这两个色彩堪称双双深得程序员本猿的心❤️ 交互动效各种炫酷CSS动效见多了,但它依然是属于难看的那一挂。 认真看看会发现其实也很水,就是一个条纹格的背景图hover后放大移出后放大。能够看看CSS求证求证。 果不其然,class.hover\:bg-\[length\:125\%_125\%\]的hover事件作用就是放大背景尺寸: .hover\:bg-\[length\:125\%_125\%\]:hover { background-size: 125% 125%;}另外,配上一丢丢的动效———?竟然没有css文件,嗯,less也没有,sass也没有,fine。 原来是配上一丢丢的魔法: .hover\:bg-[length\:125\%_125\%].duration-300.transition-all.shadow-sm, .shadow-xl———下面这些class的款式,实则都是由@tailwind解决。 Tailwind CSS 是一个性能类优先的 CSS 框架,它集成了诸如 flex, pt-4, text-center 和 rotate-90 这样的的类,它们能间接在脚本标记语言中组合起来,构建出任何设计。在开发中只须要在src/styles/globals.css下增加以下几行代码,即可应用语义化类名(比方下面那四个class)来发明css。 @tailwind base;@tailwind components;@tailwind utilities;小小的交互挖出大大的宝藏!逃离手写css的常识又+1啦~ 多语言这其实是个很常见的操作了,许多大型网站都是N语言国际化的。但也正是因为它们往往都是大网站,所以想要看清楚它的多语言解决逻辑反而没那么清晰。这个我的项目体量小、语言多,正好适合~ 先来瞅一眼src/pages下的目录构造。 src/pages|____404.tsx|_____document.tsx|_____app.tsx|____[lang]| |____index.tsx| |____learn| | |____index.tsx| | |____[lesson].tsx| |____playground.tsx| |____cheatsheet.tsx作为一个Next.js我的项目,它的目录构造就是路由构造。中文首页https://regexlearn.com/zh-cn就对应着[lang]/index.tsx文件。 回到src下的一级文件。 src|____migration.ts|____context|____types.d.ts|____utils|____styles|____components|____shortcuts.ts|____data|____pages|____localization除了pages,还有localization文件夹,上面是各语言的配置文件。以zh-cn为例,各个语言的文件构造都一样。 src/localization|____zh-cn| |____lessons.json| |____general.json| |____landing.json| |____index.js| |____learn.json| |____cheatsheet.json| |____lessons| | |____regexForSeo.json其中index是个入口文件。具体配置的JSON文件,能够浅看一眼lessons.json,都一样。 { "lessons.regex101.title": "Regex 101 - ZH-CN", "lessons.regex101.description": "您能够在本教程中学习 Regex 的基础知识。 ", "lessons.regexForSeo.title": "Regex for SEO - ZH-CN", "lessons.regexForSeo.description": "在本教程中,您能够理解如何以及在何处应用 Regex 进行 SEO。"}在应用时,只须要下面文件的将key:lessons.regex101.title作为id传入FormattedMessage组件即可 ⬇️ ...

November 25, 2022 · 1 min · jiezi

关于正则表达式:常用正则表达式整理

罕用正则表达式(继续更新)校验数字 1 数字:^[0-9]*$ 或者 ^\d$ 2 n位数字:^\d{n}$ 3 正整数:^(0?|[1-9]\d*)$ 4 最多两位小数:^(0?|[1-9]\d*)(.\d{1,2})?$校验字符 1 汉字:^[\u4e00-\u9fa5]+$ 2 英文和数字:^[A-Za-z0-9]+$其余 1 邮箱:^[\w][email protected][A-Za-z]+(\.[A-Za-z0-9]+){1,2}$ 2 域名:^((http://)|(https://))?([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}(/)$ 3 ip:^((25[0-5])|(2[0-4]d)|(1dd)|([1-9]d)|d)(.((25[0-5])|(2[0-4]d)|(1dd)|([1-9]d)|d)){3}$ 4 身份证号:^\d{15}|\d{18}$ 5 中国邮政编码:^[1-9]\d{5}(?!\d)$ 6 腾讯QQ号:^[1-9][0-9]{4,}$

September 29, 2022 · 1 min · jiezi

关于正则表达式:正则表达式

简介 Introduction正则表达式(Regular Expression) 是计算机科学的一个概念,正则表达式是应用单个字符串来形容和匹配一系列合乎句法规定的字符串。在很多文本编辑器里,正则表达式通常被用来检索和替换那些合乎某个模式的文本。 匹配规定字面量字符和元字符在正则表达式中,只示意其本身字符含意的叫做字面量字符。其实,大部分字符都示意字面含意。如: /a/ #匹配 'a'/b/ #匹配 'b'/ab/ #匹配 'ab'还有一些字符代表非凡含意,而不是其本身意义,叫做元字符,如: |字符示意“或”运算,匹配|字符右边或左边的字符串,|的数量可推广。/a|b/ #匹配 'a' 或者 'b'/a|b|c/ #匹配 'a' 或 'b' 或 'c'/ab|cd/ #匹配 'ab' 或 'cd' 而不匹配 'a' 或 'b' 或 'c' 或 'd'.字符匹配除了回车、换行、行分隔符和段宰割符的字符。/a.b/ #可匹配a,b之间任意字符,如:'acb','a0b'等,但不匹配两头含有多个字符的状况地位符: ^字符匹配字符串开始的地位$字符匹配字符串完结的地位/^123/ #可匹配'123'呈现在开始地位的字符串,如'12345'/123$/ #可匹配'123'呈现在完结地位的字符串,如'0123'转义字符如果想要匹配正则表达式中的元字符自身,则须要在它们后面加反斜杠\,如: /a\+b/ #匹配 'a+b'正则表达式中须要反斜杠本义的有:|,.,^,$,{,[,(,),\,+,* 特殊字符正则表达式对一些不能打印的字符提供了非凡的示意办法: \cX 示意Ctrl-[X],其中的X是A-Z之中任一个英文字母,用来匹配控制字符。[\b] 匹配退格键(U+0008)。\n 匹配换行键。\r 匹配回车键。\t 匹配制表符 tab(U+0009)。\v 匹配垂直制表符(U+000B)。\f 匹配换页符(U+000C)。\0 匹配null字符(U+0000)字符类字符类示意给定一系列字符,只有匹配其中任意一个即可。字符序列被放入方括号[]中,如: /[abc]/ #可匹配'app,因为'app'含有字符'a',但不能匹配'def',因为'def'不含'abc'中任意一个如果方括号内的第一个字符是[^],则示意除了字符类之中的字符,其余字符都能够匹配。比方,[^xyz]示意除了x、y、z之外都能够匹配。/[^abc]/ #能够匹配'cde',但不能匹配'cba'如果方括号内没有其余字符,只有[^],就示意匹配所有字符,其中包含换行符。相比之下,点号作为元字符(.)是不包含换行符的^只有在字符类的第一个地位才有非凡含意,否则就是字面含意。某些状况下,对于间断序列的字符,连字符(-)用来提供简写模式,示意字符的间断范畴。比方,[abc]能够写成[a-c],[0123456789]能够写成[0-9],26个大写字母能够写成[A-Z]。修饰符修饰符放在正则表达式的开端,示意一些附加规定,如: i修饰符示意疏忽大小写/abc/i #可匹配 'abc' 或 'ABC'm修饰符示意会毁坏^和$的匹配规定/name$/ #不能匹配'my name\n'因为结尾不是name,而是换行符/name$/m #能够匹配'my name\n'g修饰符示意全局匹配。默认状况下,正则表达式第一次匹配胜利就进行了,而g修饰符能够匹配到开端/aaaaa/ #只匹配第一个'a'/aaaaa/g #匹配所有的'a'数量符数量符用来示意某个模式的呈现次数。 ? 问号示意某个模式呈现0次或1次。* 星号示意某个模式呈现0次或屡次。+ 加号示意某个模式呈现1次或屡次。/n?ame/ #可匹配'name','ame'/n*ame/ #可匹配'name','ame','nname'/n+ame/ #可匹配'name','nname'数量符默认为贪心匹配,在数量符后加?能够将其变为非贪心匹配: ...

September 15, 2022 · 1 min · jiezi

关于正则表达式:密码校验4选3-生成对应正则

要求类型4选3(匹配时再加上前一种输出判断)外围思路:判断以后输出的前面是不是符合要求 microsoft 的形容 (?!pattern)执行反向预测后行搜寻的子表达式,该表达式匹配不处于匹配 pattern 的字符串的起始点的搜寻字符串。它是一个非捕捉匹配,即不能捕捉供当前应用的匹配。例如,'Windows (?!95|98|NT|2000)' 匹配“Windows 3.1”中的 “Windows”,但不匹配“Windows 2000”中的“Windows”。预测后行不占用字符,即产生匹配后,下一匹配的搜寻紧随上一匹配之后,而不是在组成预测后行的字符后另一种解释 转自 https://www.oschina.net/question/12_9507 (?<=exp) 也叫零宽度正回顾后 发断言,它断言本身呈现的地位的后面能匹配表达式 exp。比方 (?<=\bre)\w+\b 会匹配以 re 结尾的单词的后半部 分 (除了 re 以外的局部),例如在查找 reading a book 时,它匹配 ading。如果你想要给一个很长的数字中每三位间加一个逗号 (当然是从左边加起了),你能够这样查找须要在后面和外面增加逗号的局部:((?<=\d)\d{3})+\b,用它对 1234567890 进 行查找时后果是 234567890。实操 正向否定 穷举let _arr = ['\\d', 'a-z', 'A-Z', '~!@#$%\\^&\\*\\(\\)\\[\\]\\{\\}\\?\\+'];this.a(_arr, 2, 6, 20);4个参数 明码中蕴含的类型2个类型进行一个组合明码最小长度明码最大长度a(_arr, m = 2, min = 6, max = 20) { let temp = this.bbb(_arr, m); // 拼接字符串 let k = []; for (let val of temp) { k.push(`(?![${val.join('')}]+$)`); } k.push(`[${_arr.join('')}]{${min},${max}}$`); console.log(k); // 生成正则 console.log(new RegExp('^' + k.join(''))); return new RegExp('^' + k.join(''));},k的打印后果 ...

September 8, 2022 · 1 min · jiezi

关于正则表达式:常用正则表达式汇总

汇总了罕用的正则,定期更新。 URL匹配匹配http或https结尾得url,兼容端口号,来自与Yii2框架:validators/UrlValidator.php /^(http|https):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(?::\d{1,5})?(?:$|[?\/#])/iQQ号码5到11位数字,不能以0结尾,其中11位的是手机号码,手机号码也能够当作QQ号码登录 /^[1-9]\d{4,10}$/IP地址来自于Yii2框架:validators/IpValidator.php IPV4 /^(?:(?:2(?:[0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9])\.){3}(?:(?:2([0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9]))$/IPV6 /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/HTML标签匹配单标签、双标签的开始标签和完结标签,可用于革除HTML标签 /<\/?\w+(\s+\w+=(['"]).*\2)*\s*\/?\s*>/暴力模式 /<[^>]*>/中国邮政编码6位数字,能够0结尾。 其中前两位示意省、市、自治区,第三位代表邮区,第四位代表县、市,最初两位代表投递邮局,最初两位是代表从这个城市哪个投递区投递的,即投递区的地位。 /^\d{6}$/严格校验 /^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$/账号以数字、字母、下划线组合,长度为6-18位 /^\w{6,18}$/以数字、字母、下划线组合,不能应用数字结尾,长度为6-18位 /^[a-zA-Z_]\w{5,17}$/微信号:6至20位,以字母结尾,由字母、数字、减号、下划线组成 /^[a-zA-Z][\w-]{5,19}$/银行卡号蕴含对公账户和对私账号 起源:微信领取 /^[1-9]\d{9,29}$/对立社会信用代码/^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/数字整数,0到1亿 /^(0|[1-9]\d{0,9})$/小数,0到1亿,小数位能够省略 /^(0|[1-9]\d{0,9})(\.\d{1,2})?$/手机号码、座机号码手机号码 /^1[3-9]\d{9}$/座机号码,区号可选,分机号可选,分隔符反对-/ /^(\d{3,4}[-\/]?)?\d{7,8}([-\/]\d{2,4})?$/手机或座机 /^1[3-9]\d{9}$|^(\d{3,4}[-\/]?)?\d{7,8}([-\/]\d{2,4})?$/手机号码严格模式,将每个号段都列举进去https://www.jianshu.com/p/1e8... /^1(3\d|4[5-9]|5[0-35-9]|6[567]|7[0-8]|8\d|9[0-35-9])\d{8}$/身份证号码18位身份证号码 简略匹配 /^[1-9]\d{16}[\dxX]$/严格匹配,匹配年、月、日格局 /^[1-9]\d{5}[12]\d{3}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dxX]$/香港 /^[a-zA-Z]\d{6}\([\dA]\)$/澳门 /^[1|5|7]\d{6}[(\d)]{3}$/台湾 /^[a-zA-Z][0-9]{9}$/匹配中文JavaScript、Java8、Python /[\u4e00-\u9fa5]/PHP、Golang /[\x{4e00}-\x{9fa5}]/uPHP、Golang,匹配3到5个中文 /^[\x{4e00}-\x{9fa5}]{3,5}$/u匹配区间数字原理就是将数字分段拆分匹配 匹配1-5 /^[1-5]$/匹配1-15,拆分为1-9或10-15 /^(?:[1-9]|1[0-5])$/匹配5-365,拆分为5-9或10-99或100-299或300-359或360-365 /^(?:[5-9]|[1-9]\d|[1-2]\d{2}|3[0-5]\d|36[0-5])$/匹配后缀名匹配以特定的后缀名结尾 /\.(jpg|jpeg|png|gif|webp)$/明码强度明码能够是任意字符,但必须蕴含字母和数字组合,长度为8-32位 /^(?=.*[0-9].*)(?=.*[a-zA-Z].*).{8,32}$/明码能够是任意字符,但必须蕴含大写字母、小写字母和数字组合,长度为8-32位 /^(?=.*[0-9].*)(?=.*[a-z].*)(?=.*[A-Z].*).{5,32}$/火车车次/^[GCDZTSPKXLY1-9]\d{1,4}$/护照蕴含香港、澳门 /(^[EeKkGgDdSsPpHh]\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\d{7}$)/电子邮箱简略匹配 /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/规范匹配http://www.regular-expression... /^[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/单位名称格局:长度在2-30之间,只能蕴含中英文、数字、书名号、&、-、顿号、括号 JavaScript、Java8、Python /^[a-zA-Z0-9《》()()\-、&\u4e00-\u9fa5]{2,30}$/PHP、Golang /^[a-zA-Z0-9《》()()\-、&\x{4e00}-\x{9fa5}]{2,30}$/留神:中文匹配局部须要依据对应语言的写法 单位名称示例: 华为技术有限公司SMC(中国)有限公司TCL华星光电技术有限公司深圳创维-RGB电子有限公司中国兵器工业第二〇五研究所车牌号新能源 /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z](?:((\d{5}[A-HJK])|([A-HJK][A-HJ-NP-Z0-9][0-9]{4}))|[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳])$/非新能源 /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]$/新能源+非新能源 /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/

August 24, 2022 · 1 min · jiezi

关于正则表达式:正则表达式预查的解释与应用

解释预查又称环视(Lookaround)、属于零宽断言(Zero-Length Assertions)的一种,有 4 个语法: 语法中文名英文名(?=regex)肯定性前瞻Positive lookahead(?!regex)否定性前瞻Negative lookahead(?<=regex)肯定性后顾Positive lookbehind(?<!regex)否定性后顾Negative lookbehind比拟艰深的解释: 肯定性:匹配 regex否定性:不匹配 regex前瞻:向前(右、正向)看(预查)后顾:向后(左、反向)看(预查)肯定性前瞻:先看看后面(左边)是否匹配 regex,但不向前走否定性前瞻:先看看后面(左边)是否不匹配 regex,但不向前走肯定性后顾:回头看前面(右边)是否匹配 regex否定性后顾:回头看前面(右边)是否不匹配 regex利用1、判断是否同时蕴含但不限于大写字母、小写字母和数字,且不能蕴含 114514,长度为 8~32 个字符 /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?!.*114514).{8,32}$/.test('10086@qq.COM')// true2、判断不以 80、82、84、86、88 结尾 /^(?!8[02468])\d+$/.test('81789110')// true3、匹配由空白宰割的字符串中的纯数字串 '123 abc 1st\r\n4 1970\'s 56 @10086 789'.match(/(?<!\S)\d+(?!\S)/g)// ['123', '4', '56', '789']'123 abc 1st\r\n4 1970\'s 56 @10086 789'.match(/(?<=^|\s)\d+(?=\s|$)/g)// ['123', '4', '56', '789']4、仅删除夹在数字中的逗号 'And then, I have 1,003,334, you have 996,6,6,6'.replace(/(?<=\d),(?=\d)/g, '')// 'And then, I have 1003334, you have 996666'5、在数字中增加分组逗号 'And then, I have 1003334, you have 996666'.replace(/(?<=\d)(?=(?:\d{3})+(?!\d))/g, ',')// 'And then, I have 1,003,334, you have 996,666'6、判断是否仅蕴含字母,但不蕴含小写元音字母 ...

July 23, 2022 · 1 min · jiezi

关于正则表达式:正则表达式技巧与注意事项

原创:打码日记(微信公众号ID:codelogs),欢送分享,转载请保留出处。简介现如今,正则表达式简直是程序员的必备技能了,它动手的确很容易,但如果你不认真推敲学习,会长期停留在正则最根本的用法层面上。 因而,本篇文章,我会介绍一些能用正则解决的场景,但这些场景如果全本人推敲实现的话,须要花一些工夫能力实现,或者就齐全想不进去,另外也会介绍一些正则表达式的性能问题。 匹配多个单词比方我想匹配zhangsan、lisi、wangwu这三个人名,这是一个很常见的场景,其实在正则外面也算基本功,但鉴于自己初入门时还是在网上搜寻失去的答案,还是值得提一下的! 实现如下: zhangsan|lisi|wangwu其中|示意或的含意,就是匹配zhangsan或lisi或wangwu了。 匹配反复数字匹配如1111、2222、3333这样的4位长度的反复数字,突一想,这不必\d{4}就解决了嚒,其实不然,因为\d{4}能够匹配1111,但也能够匹配1234啊。 写法如下: (\d)\1{3}\d匹配第一个数字,前面的\1匹配后面\d匹配的内容,反复3次,这样就能够匹配1111或2222这样的4位数字串了。 匹配各种空白在应用正则时,罕用\s来匹配空白,但遗憾的是,还是有一些Unicode的空白字符,\s无奈匹配,这时能够尝试POSIX字符类\p{Space},我在Java中验证通过,能够匹配ascii空白字符与Unicode空白字符,如果是其它语言的话,可能正则语法会稍有区别。 地位匹配正则表达式中\G与环视是比拟难了解的,因为这两个货色很多书上只是介绍了匹配的规定,没有说出本质,导致死记的规定过一段时间就忘,也不明确这两货色有啥用。 咱们转换一下思维,其实在正则表达式中,匹配指标只有两个,一是匹配字符串中的字符,二是匹配字符串中的地位,如下图: 上边的hello,有5个字符能够匹配,另外还有6个地位能够匹配,而^hello中^就是代表匹配结尾的地位,所以如果是_hello就无奈被^hello匹配,因为_与h之间的地位并不是结尾,不能与^匹配! 常见地位匹配规定 规定匹配的地位^ \A匹配开始地位$ \z \Z匹配完结地位\b \B匹配单词与非单词边界地位\G匹配以后匹配的开始地位(?=a) (?!a)正向环视,看看以后地位前面是否是a,或不是a(?<=a) (?<!a)逆向环视,看看以后地位后面是否是a,或不是a^与\A ^ 匹配文本开始地位,但在多行匹配模式下,^匹配每一行的开始地位。 \A 仅仅只能匹配开始地位,不论什么匹配模式下 $与\Z $ 匹配文本开端地位,但在多行匹配模式下,$匹配每一行的开端地位。 \Z 仅仅只能匹配开端地位,不论什么匹配模式下 \b与\B \b匹配单词边界,在Java中,单词边界即是字母与非字母之间的地位,中文不认为是单词,另外文本结尾与文本结尾也是单词边界 \B匹配非单词边界 \G 匹配上次匹配的完结地位或以后匹配的开始地位,第一次匹配时,匹配文本开始地位,如下: 从1234a5678中找单个数字,如果用\d去找,能够找到8个,但应用\G\d去找,却只能找到4个 查找过程: 第1次查找,\G匹配文本开始地位,1与\d匹配,找到第1个匹配,即1 第2次查找,\G匹配1前面2后面之间的地位,2与\d匹配,找到第2个匹配,即2 第3次查找,\G匹配2前面3后面之间的地位,3与\d匹配,找到第3个匹配,即3 第4次查找,\G匹配3前面4后面之间的地位,4与\d匹配,找到第4个匹配,即4 第5次查问,\G匹配4前面5后面之间的地位,但a与\d不匹配,匹配完结,总共找到4个匹配。 环视 (?=a) 与 (?!a) 正向必定(否定)环视,用来检测以后地位前面字符是否是a,或不是a (?<=a) 与 (?<!a) 逆向必定(否定)环视,用来查看以后地位后面字符是否是a,或不是a 如下,查找被()包裹的单词,应用环视限定单词右边是(,左边是) 地位可被屡次匹配 文本中的一个地位,能够同时匹配多个规定,且与规定在正则表达式中的先后顺序无关,例如上面3个正则表达式是等价的: ^abc^^^^^^abc^(?=a)\b^^^abc 上面举两个理论例子领会一下地位匹配! 例1:明码强度校验 前端校验明码强度时,常常有这样的要求,长度8到10位,且必须蕴含数字、字母、标点符号,可通过一个正则表达式校验进去,如下: ^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*\p{P}).{8,10}$其中,(?=.*[0-9])示意结尾地位的前面肯定要有数字,(?=.*[a-zA-Z])示意结尾地位前面肯定要有字母,(?=.*\p{P})示意结尾地位的前面肯定要有标点符号,.{8,10}示意匹配8到10位字符,这几个正则合在一起,就实现了校验明码强度的要求。 例2:千分位数字 有时咱们须要将123456789变成123,456,789这样的千分位数字,这个应用正则就能够实现,如下,将此正则匹配到的地位,替换为,: (?!^)(?=(\d{3})+$)其中,(?=(\d{3})+$)示意匹配地位,这个地位前面必须要有一组或多组3个数字,满足这样条件的地位有3个,结尾与1之间的地位,3和4之间的地位,6和7之间的地位,而后(?!^)又限度了同样的这些地位,不能是结尾,就只能3和4,6和7之间的地位满足要求了,所以替换之后,就变成了123,456,789。 ...

April 5, 2022 · 1 min · jiezi

关于正则表达式:在线正则表达式大全测试

在线正则表达式大全测试在线正则表达式大全测试 本工具提供在线正则表达式的测试,反对替换,客户端实时计算,数据实时更新。本工具提供在线正则表达式的测试,反对替换,客户端实时计算,数据实时更新。本工具提供在线正则表达式的测试,反对替换,客户端实时计算,数据实时更新。 https://tooltt.com/regexp/

March 29, 2022 · 1 min · jiezi

关于正则表达式:初识正则表达式

什么是正则表达式正则表达式,英文名Regular Expression,常见缩写regex、regexp或RE都指代正则表达式。 正则表达式是对句法规定的一种形容。正则表达式应用单个字符串来形容、匹配一系列匹配某个句法规定的字符串。 正则表达式是由一些根本的汇合及对汇合的运算组成的。 根本元素一般字符 字母、数字、汉字、下划线、以及后边章节中没有非凡定义的标点符号,都是"一般字符"。表达式中的一般字符,在匹配一个字符串的时候,匹配与之雷同的一个字符。 举例: 表达式 "c",在匹配字符串 "abcde" 时,匹配后果是:胜利;匹配到的内容是:"c",匹配到的地位是:开始于2,完结于3。(注:下标从0开始还是从1开始,因以后编程语言的不同而可能不同)根本运算交加如果有两个正则表达式E和F,那么EF也是一个正则,示意同时匹配E和F的内容。这跟编程中的逻辑与是一个意思,跟汇合中的交加也是一个意思。你也能够连贯任意多个正则。 举例: 表达式 "bc",在匹配字符串 "abcde" 时,匹配后果是:胜利;匹配到的内容是:"bc",匹配到的地位是:开始于1,完结于3。并集如果有两个正则表达式E和F,那么E|F也是一个正则,示意匹配E或者匹配F。这跟编程中的逻辑或是一个意思,跟汇合中的并集也是一个意思。 你能够应用|连贯任意多个正则表达式。 如果你要连贯十分多的正则,那就得写十分多的竖线,看起来十分乱。所以人们还约定了一种简化记法[EFGH],跟写成E|F|G|H成果是一样,但前者更简短,更清晰。 举例: 表达式 " [bcd][bcd] " 匹配 "abc123" 时,匹配的后果是:胜利;匹配到的内容是:"bc";匹配到的地位是:开始于1,完结于3。补集如果你要排除匹配E和F的内容,须要写成 [ ^EF ] 举例: 表达式 "[^abc]" 匹配 "abc123" 时,匹配的后果是:胜利;匹配到的内容是:"1";匹配到的地位是:开始于3,完结于4。单元素汇合连字符示意多个元素一个字母a, 一个数字1都是正则,别离匹配蕴含a和蕴含1的内容。 如果咱们想匹配数字1234,那么依据交加规定,咱们写成1234就能够了。 如果咱们想匹配所有可能呈现的数字,则能够依据并集规定写成0|1|2|3|4|5|6|7|8|9。是不有点长。咱们能够简化成[0123456789]。一下子少了很多坚线。 慢着,如果想匹配所有可能呈现的小写字母呢?难不成要将26个字母全副写入正则表达式中? 正则表达式为此提供了一种更加简化办法——连字符,能够应用减号-示意间断呈现的字符,只需写出头尾。所以咱们能够把[0123456789]进一步简化成[0-9],把[abc...xyz]简化成[a-z]。 \d因为[0-9]很罕用,大家又进一步简化成了\d(对应单词 digit)。 \a因为[a-zA-Z]也很罕用,大家就把它简化成\a(对应单词 alpha)。 \w果想匹配大小写字母、数字和下划线(也就是所有单词字符),能够写成[a-zA-Z0-9_]。也是因为太罕用,大家将其简化为\w(对应单词 word)。 \s如果想匹配一些空白字符,能够写成[ \t\r\n\v\f],这个正则会匹配空格、程度制表符、回车、换行、 垂直制表符和 Page break 记。这里用到了跟 c 语言 printf 函数一样的转义字符。同样因为应用宽泛,被简化为\s(对应单词 space)。 取反——大写正则反对取反操作。[0-9]示意匹配所有数字,那[ ^0-9 ]就示意匹配所有非数字字符。因为应用宽泛,人们将其简写成\D。大家留神,[0-9]简写成\d(小写字母),对应的[ ^0-9 ]简写成\D(大写字母)。以此类推,\a取反是\A、\w取反是\W、\s取反是\S。 选集有了连字符和并集规定,实践上咱们能够匹配所有字符。然而 Unicode 有上百万字符,难道咱们都要写到方括号里吗?不可能。 咱们能够利用取反操作。只有排除大量不罕用字符,就能够匹配剩下的大多数字符了。但排除哪个呢?最终人们决定排除\n。为什么呢?因为一般而言,正则都是逐行匹配的,一次匹配一行内容,不会遇到换行符。最终能够用[ ^\n ]示意匹配所有字符。同样因为太罕用,这一写法被简化成句点'.'。 也就是说在正则表达式中,一个.能够匹配\n以外的所有字符。 转义字符\ ...

March 20, 2022 · 1 min · jiezi

关于正则表达式:正则表达式正向匹配与反向匹配

正向表达式就是所匹配要操作的字符串在前,表达式pattern在后;反向表达式则是表达式pattern在前,所匹配要操作的字符串在后。exc(?:pattern) 匹配pattern但不获取匹配后果,也就是说这是一个非获取匹配,不进行存储供当前应用。这在应用或字符“(|)”来组合一个模式的各个局部是很有用。例如“factor(?:y|ies)”就是一个比“factory|factories”更简略的表达式 var ary = 'factorywork' const reg = /factor(?:y|ies)/ const str = ary.replace(reg, '') console.log('str:', str) // str: work // 和(?=pattern)的区别前者是组合各个局部 // str: yworkexc(?=pattern) (查找合乎pattern规定的exc局部)正向必定预查,在任何匹配pattern的exc开始处匹配查找字符串。这是一个非获取匹配,该匹配不须要获取供当前应用。 var ary = 'factory123work123factory866' const reg = /factory(?=\d)/g const str = ary.replace(reg, '') console.log('str:', str) // str: 123work123866exc(?!pattern) 正向否定预查,在任何不匹配pattern的exc开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不须要获取供当前应用。 var ary = 'factorywork123factory866' const reg = /factory(?!\d)/g const str = ary.replace(reg, '') console.log('str:', str) // str: work123factory866(?<=pattern)exc 反向必定预查,与正向必定预查相似,只是方向相同。查找合乎表达式pattern的exc。 var ary = 'factorywork123factory866' const reg = /(?<=\d)factory/g const str = ary.replace(reg, '') // 去掉数字前面factory局部 console.log('str:', str) // str: factorywork123866(?<!pattern)exc 反向否定预查,与正向否定预查相似,只是方向相同。 var ary = 'thisfactorywork123factory866' const reg = /(?<!\d)factory/g const str = ary.replace(reg, '') // 去掉非数字后的factory console.log('str:', str) // str: thiswork123factory866

March 2, 2022 · 1 min · jiezi

关于正则表达式:在线正则表达式可视化测试工具

在线正则表达式可视化测试工具在线正则表达式可视化测试工具 在线正则表达式可视化测试工具。在线正则表达式可视化测试工具。 https://tooltt.com/regulex/

January 14, 2022 · 1 min · jiezi

关于正则表达式:正则表达式应用之身份证号识别

明天我的项目中遇到了身份证号辨认的问题,须要辨认15或18位的居民身份证,网上查了一下,感觉很有意思,这里跟大家分享下我的了解过程,心愿能帮忙大家更好的学习正则表达式。18位身份证号辨认/^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/这是一个比较完善的辨认正则,间接看的话一头雾水,咱们先来把他别离成5个局部,首先要阐明的是:结尾的^符号示意待辨认对象的结尾,也就是一个字符串开始的地位,而$示意字符串完结的地位。 part1(身份证1-6位):^([1-6][1-9]|50)\d{4}方括号中的1-6示意1-6中的任意数字,1-9示意1-9之间的任意数字,所以[1-6][1-9]组合起来示意的是合乎规定的两个数字,紧接着的|示意或的关系,也就是说可能为50,再接着的\d{4}示意四位数字。因而part1规定了18位居民身份证号的前6位。 part2(身份证7-10位):(18|19|20)\d{2}这部分比拟容易了解,首先是(18|19|20),示意可能是18、19、20,接着前面的\d{2}示意为两位数字。 part3(身份证11-12位):((0[1-9])|10|11|12)与part2相似,外部括号的内容:(0[1-9])示意两位数字,其中第一位为0,第二位为0-9中任意数字。竖杠示意或者的关系,示意也有可能是10、11、12,总之这段正则就是对两位数字进行限度。 part4(身份证13-14位):(([0-2][1-9])|10|20|30|31)与part3相似,首先限度了一个两位数([0-2][1-9]),第一个数为0-2,第二个数为1-9,前面的为除了这个规定之外可能的两位数(可能是10、20、30、31) part5(身份证15-18位):\d{3}[0-9Xx]$这部分也很好了解,首先是3位数字,而后对最初一位(18位)进行限定,这一位可能是0-9间接的数字,也可能是X或者是小写x,最初的最初用$示意整个字符串的结尾。 15位身份证号辨认/^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}$/15位身份证的正则辨认和18位的相似,咱们也是拆开一块一块的来看。 part1(身份证1-6位):^([1-6][1-9]|50)\d{4}这部分与15位的part1统一,不做赘述。 part2(身份证7-10位):\d{2}((0[1-9])|10|11|12)首先\d{2}示意两位数字,而后括号外面也是示意对两位数字的规定校验(这里校验的是月份)。 part3(身份证11-12位):(([0-2][1-9])|10|20|30|31)这部分也是示意两位数字,不做赘述。 part4(身份证13-15位):\d{3}$三位数字及完结符号。 一个小小的举荐作为正则表达式的初学者,刚开始肯定会感觉拆分正则比拟艰难,因为有的正则可能写的很长很长,这里给大家举荐一个可能格式化正则的网站,把正则粘上去,网站就会主动的给拆成一块一块的。RegExr总结不论是前端工程师还是后端工程师,正则表达式都是须要把握的一门技术,深有感触的是在刷一些leetcode的时候,正则总是能出人意料的字符串问题笨重化解,在工作中,正则也大有用途,不得不说,正则真的是太微妙了!

December 20, 2021 · 1 min · jiezi

关于正则表达式:5-分钟快速掌握-shell-中的正则表达式

本文首发于众里千寻 - 5 分钟疾速把握 shell 中的正则表达式我常常会在命令行应用 grep 等命令解决一些文本查找的问题。在应用正则表达式的时候常常会碰到一些令人困惑的问题,比方同样的正则表达式在一个命令中能够用,在另一个命令中却不能够用。 明天咱们来好好整顿下 shell 中的正则表达式,这样在应用的时候可能驾轻就熟。 分类正则表达式最早在 1950 年代由美国数学家 Stephen Cole Kleene 提出,起初被 Unix 操作系统的文本处理工具宽泛应用。 通过多年的倒退和实际,最终造成两大规范,一个是 POSIX 规范,另一个是 Perl 规范。后者本是为 Perl 语言实现的,因为其性能十分弱小,被 Java、JavaScript 等语言宽泛借鉴,从而被宽泛应用。 咱们这里将正则表达式分为三类: 根本正则表达式(Basic Regular Expression 简称 BRE),由 POSIX 规范定义。扩大正则表达式(Extended Regular Expression 简称 ERE),也由 POSIX 规范定义。Perl 的正则表达式(Perl Regular Expression 简称 PRE),由 Perl 语言定义。组成部分根本组成部分下表展现了正则表达式的根本组成部分。 正则表达式形容示例Basic RegExExtended RegExPerl regEx\本义符,将特殊字符进行本义,疏忽其非凡意义a.b匹配a.b,但不能匹配ajb,.被本义为非凡意义\\\^匹配行首^tux匹配以tux结尾的行^^^$匹配行尾tux$匹配以tux结尾的行$$$.匹配除换行符\n之外的任意单个字符ab.匹配abc或bad,不可匹配abcd或abde,只能匹配单字符...[]匹配蕴含在[字符]之中的任意一个字符coo[kl]能够匹配cook或cool[][][][^]匹配1之外的任意一个字符1232不能够匹配1234或1235,1236、1237都能够[^][^][^][-]匹配[]中指定范畴内的任意一个字符,要写成递增[0-9]能够匹配1、2或3等其中任意一个数字[-][-][-]?匹配之前的项1次或者0次colou?r能够匹配color或者colour,不能匹配colouur不反对??+匹配之前的项1次或者屡次sa-6+匹配sa-6、sa-666,不能匹配sa-不反对++*匹配之前的项0次或者屡次co*l匹配cl、col、cool、coool等***()匹配表达式,创立一个用于匹配的子串ma(tri)?匹配max或maxtrix不反对()(){n}匹配之前的项n次,n是能够为0的正整数[0-9]{3}匹配任意一个三位数,能够扩大为0-9[0-9]不反对{n}{n}{n,}之前的项至多须要匹配n次[0-9]{2,}匹配任意一个两位数或更多位数不反对{n,}{n,}{n,m}指定之前的项至多匹配n次,最多匹配m次,n<=m[0-9]{2,5}匹配从两位数到五位数之间的任意一个数字不反对{n,m}{n,m}|交替匹配|两边的任意一项ab(c|d)匹配abc或abd不反对||POSIX 字符类POSIX字符类是一个形如[:...:]的非凡元序列(meta sequence),他能够用于匹配特定的字符范畴。 正则表达式形容示例Basic RegExExtended RegExPerl RegEx[:alnum:]匹配任意一个字母或数字字符[[:alnum:]]+[:alnum:][:alnum:][:alnum:][:alpha:]匹配任意一个字母字符(包含大小写字母)[[:alpha:]]{4}[:alpha:][:alpha:][:alpha:][:blank:]空格与制表符(横向和纵向)[[:blank:]]*[:blank:][:blank:][:blank:][:digit:]匹配任意一个数字字符[[:digit:]]?[:digit:][:digit:][:digit:][:lower:]匹配小写字母[[:lower:]]{5,}[:lower:][:lower:][:lower:][:upper:]匹配大写字母([[:upper:]]+)?[:upper:][:upper:][:upper:][:punct:]匹配标点符号[[:punct:]][:punct:][:punct:][:punct:][:space:]匹配一个包含换行符、回车等在内的所有空白符[[:space:]]+[:space:][:space:][:space:][:graph:]匹配任何一个能够看得见的且能够打印的字符[[:graph:]][:graph:][:graph:][:graph:][:xdigit:]任何一个十六进制数(即:0-9,a-f,A-F)[[:xdigit:]]+[:xdigit:][:xdigit:][:xdigit:][:cntrl:]任何一个控制字符(ASCII字符集中的前32个字符)[[:cntrl:]][:cntrl:][:cntrl:][:cntrl:][:print:]任何一个能够打印的字符[[:print:]][:print:][:print:][:print:]元字符元字符(meta character)是一种 Perl 格调的正则表达式,只有一部分文本处理工具反对它,并不是所有的文本处理工具都反对。 正则表达式形容示例Basic RegExExtended RegExPerl RegEx\b单词边界\bcool\b 匹配cool,不匹配coolant\b\b\b\B非单词边界cool\B 匹配coolant,不匹配cool\B\B\B\d单个数字字符b\db 匹配b2b,不匹配bcb不反对不反对\d\D单个非数字字符b\Db 匹配bcb,不匹配b2b不反对不反对\D\w单个单词字符(字母、数字与_)\w 匹配1或a,不匹配&\w\w\w\W单个非单词字符\W 匹配&,不匹配1或a\W\W\W\n换行符\n 匹配一个新行不反对不反对\n\s单个空白字符x\sx 匹配x x,不匹配xx不反对不反对\s\S单个非空白字符x\S\x 匹配xkx,不匹配xx不反对不反对\S\r回车\r 匹配回车不反对不反对\r\t横向制表符\t 匹配一个横向制表符不反对不反对\t\v垂直制表符\v 匹配一个垂直制表符不反对不反对\v\f换页符\f 匹配一个换页符不反对不反对\f常见命令中的应用命令Basic RegExExtended RegExPerl RegExgrep反对需加 -E 参数需加 -P 参数egrep反对反对需加 -P 参数sed反对需加 -r 参数不反对awk反对反对不反对常见面试知识点、技术解决方案、教程,都能够扫码关注公众号“众里千寻”获取,或者来这里 https://everfind.github.io 。 ...

December 10, 2021 · 1 min · jiezi

关于正则表达式:正则表达式完整教程略长

引言敬爱的读者敌人,如果你点开了这篇文章,阐明你对正则很感兴趣。 想必你也理解正则的重要性,在我看来正则表达式是掂量程序员程度的一个侧面规范。 对于正则表达式的教程,网上也有很多,置信你也看了一些。 与之不同的是,本文的目标是心愿所有认真读完的童鞋们,都有实质性的进步。 本文内容共有七章,用JavaScript语言残缺地探讨了正则表达式的方方面面。 如果感觉文章某块儿没有说明确分明,欢送留言,能力范畴之内,老姚必做具体解答。 具体章节如下: 引言第一章 正则表达式字符匹配攻略第二章 正则表达式地位匹配攻略第三章 正则表达式括号的作用第四章 正则表达式回溯法原理第五章 正则表达式的拆分第六章 正则表达式的构建第七章 正则表达式编程后记上面简略地说说每一章都探讨了什么? 正则是匹配模式,要么匹配字符,要么匹配地位。 第1章和第2章以这个角度去解说了正则的根底。 在正则中能够应用括号捕捉数据,要么在API中进行分组援用,要么在正则里进行反向援用。 这是第3章的主题,解说了正则中括号的作用。 学习正则表达式,是须要理解其匹配原理的。 第4章,解说了正则了正则表达式的回溯法原理。另外在第6章里,也解说了正则的表达式的整体工作原理。 不仅能看懂他人的正则,还要本人会写正则。 第5章,是从读的角度,去拆分一个正则表达式,而第6章是从写的角度,去构建一个正则表达式。 学习正则,是为了在真实世界里利用的。 第7章解说了正则的用法,和相干API须要留神的中央。 如何浏览本文? 我的倡议是浏览两遍。第一遍,不求甚解地疾速浏览一遍。浏览过程中遇到的问题无妨记录下来,兴许浏览结束后就能解决很多。而后有工夫的话,再带着问题去精读第二遍。 深呼吸,开始咱们的正则表达式旅程吧。我在起点等你。 第一章 正则表达式字符匹配攻略正则表达式是匹配模式,要么匹配字符,要么匹配地位。请记住这句话。 然而对于正则如何匹配字符的学习,大部分人都感觉这块比拟芜杂。 毕竟元字符太多了,看起来没有系统性,不好记。本章就解决这个问题。 内容包含: 两种含糊匹配字符组量词分支构造案例剖析1 两种含糊匹配如果正则只有准确匹配是没多大意义的,比方/hello/,也只能匹配字符串中的"hello"这个子串。 var regex = /hello/;console.log( regex.test("hello") ); // => true正则表达式之所以弱小,是因为其能实现含糊匹配。 而含糊匹配,有两个方向上的“含糊”:横向含糊和纵向含糊。 1.1 横向含糊匹配 横向含糊指的是,一个正则可匹配的字符串的长度不是固定的,能够是多种状况的。 其实现的形式是应用量词。譬如{m,n},示意间断呈现起码m次,最多n次。 比方/ab{2,5}c/示意匹配这样一个字符串:第一个字符是“a”,接下来是2到5个字符“b”,最初是字符“c”。测试如下: var regex = /ab{2,5}c/g;var string = "abc abbc abbbc abbbbc abbbbbc abbbbbbc";console.log( string.match(regex) ); // => ["abbc", "abbbc", "abbbbc", "abbbbbc"]留神:案例中用的正则是/ab{2,5}c/g,前面多了g,它是正则的一个修饰符。示意全局匹配,即在指标字符串中按程序找到满足匹配模式的所有子串,强调的是“所有”,而不只是“第一个”。g是单词global的首字母。 ...

November 19, 2021 · 15 min · jiezi

关于正则表达式:正则表达式实例搜集通过实例来学习正则表达式

正则表达式实例收集,通过实例来学习正则表达式。本仓库实例搜集整理来自于《一些正则表达式随记》,通过一个独自仓库专门整顿这些正则实例,提供一个实例网站,不便正则实例验证和查问。也不便增加新的正则实例大家独特保护。 国内镜像站点 · Gitee · Github 如果有一些基础知识,通过实例了解,将会更疾速入门,写出本人的正则。如果对根底还不是很理解,你能够通过《Learn regex the easy way》去学习基础知识,这个仓库教程被翻译成十几种语言了,蕴含了中文翻译,它通过极其简略的实例,帮忙你了解正则根底语法规定。 Example身份证号^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$ E.g: 42112319870115371X 用户名^[a-zA-Z0-9_-]{4,16}$ E.g: jaywcjlove。验证 数字、字母、_、-,不蕴含特殊字符,长度 4-16 之间。 微信号^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$ E.g: jslite。微信号正则,6至20位,以字母结尾,字母,数字,减号,下划线。 明码强度(宽松)^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ E.g: diaoD123, Wgood123。必须是蕴含大小写字母和数字的组合,长度在 8-10 之间。 ^[0-9a-zA-Z\u4E00-\uFA29]*$ E.g: diaoD123, Wgood123。数字字母中文。 明码强度(蕴含特殊字符)^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$ E.g: diaoD123#, Wgood123#$。明码强度正则,起码6位,包含至多1个大写字母,1个小写字母,1个数字,1个特殊字符。 火车车次^[GCDZTSPKXLY1-9]\d{1,4}$E.g: G2868, D22, D9, Z5, Z24, Z17 汉字中文^[\u4e00-\u9fa5]{0,}$ E.g: 中文, 湖北, 黄冈。不限度文字长度。 ^[\u4e00-\u9fa5]{2,6}$ E.g: 中文, 湖北黄冈。2到6位汉字 中文名字^(?:[\u4e00-\u9fa5·]{2,16})$ E.g: 周杰伦, 古丽娜扎尔·拜合提亚尔, 拉希德·本·穆罕默德·本·拉希德。 英文姓名(^[a-zA-Z][a-zA-Z\s]{0,20}[a-zA-Z]$) E.g: Gene Kelly, Fred Astaire, Humphrey Bogart, GaryCooper, Cary Grant, Joan Crawford ...

November 18, 2021 · 2 min · jiezi

关于正则表达式:十月热点EasyDL八大国产芯片实现模型部署全适配度目智能门禁机CMA1重磅发布

10月,EasyDL模型部署国产芯片适配类型丰盛度再进一步,新增「飞腾CPU」、「龙芯CPU」、「寒武纪MLU270」、「比特大陆SC5+」4款国产芯片部署能力,实现八大支流国产芯片全适配。度目智能门禁机 CM-A1全新公布,搭载Android零碎,提供二次开发接口,可自定义软件性能;丰盛接口预留、POE继续护航。 本月共有14项重要产品能力降级、上新,上面就给你带来百度大脑最新动静。 重点领先看 国内当先!EasyDL国产芯片适配类型丰盛度再进一步 EasyDL新增4款国产芯片部署能力,反对「飞腾CPU」、「龙芯CPU」、「寒武纪MLU270」、「比特大陆SC5+」 ,实现八大支流国产芯片全适配,进一步满足用户多场景适配需要。 八大支流国产芯片全适配:EasyDL提供最宽泛的模型部署适配能力,目前已宽泛适配反对超过20+芯片类型,其中国产芯片更是实现八大国产支流芯片(华为昇腾、华为海思、瑞芯微NPU、寒武纪MLU270、飞腾CPU、龙芯CPU、昆仑XPU、比特大陆SC计算卡)全笼罩。强强联手,疾速实现降本增效:国产芯片高性价比劣势+EasyDL零门槛开发,在框架与网络适配方面,累计反对上万种框架网络芯片组合,充沛满足了开发者的部署场景细分需要适应更多细分场景,助力企业疾速实现降本增效。立刻体验 > https://ai.baidu.com/easydl/?... 度目智能门禁机 CM-A1全新公布 ,共性开发随心定制 度目智能门禁机 CM-A1, 百度自主研发,利用于人员通行、考勤场景,反对人脸、刷卡、二维码等多种核验形式的智能门禁机。 >>产品亮点 精工打造,松软耐造: 8寸高清屏,全金属机身,反对 IP65+ 防水防尘等级,无惧残酷环境,室内室外装置无忧算法当先,精准辨认: 反对6~90岁全年龄段,动静学习,优化老人、儿童辨认成果,轻松应答暗光、强光、逆光等各种简单光线环境共性开发,随心定制: 搭载Android零碎,提供二次开发接口,可自定义软件性能丰盛接口预留 , POE继续护航: 反对GPIO多路扩大,韦根输入输出,USB2.0/Host type-c 物理接口,POE供电硬件搭配 , 核验全面: 搭载RGB/IR 双目高清摄像头、屏下刷卡模块、专用二维码摄像头,提供人脸/刷卡/二维码辨认组合核验部署灵便,装置便捷: 闸机式、立柱式、壁挂式装置>>产品外围性能 身份核验:人脸、刷卡、二维码、身份证多种组合核验形式,可扩大身份证读卡器真人检测: 双目多模态活体检测,可分别来自打印纸,照片,手机屏、电脑屏、面具、头模的舞弊行为音频对讲 : 反对喇叭、提醒语、呼吸灯等多通道反馈辨认后果,可反对音视频对讲权限治理: 人员限时通行、访客限时通行、黑名单人员通行管控运维治理: 反对本地降级、云端静默降级,设施状态运维> >典型利用场景 智慧社区:出入口治理、单元楼刷脸开门智慧校园:学生签到、访客治理、校舍治理智慧园区:访客治理、无卡通行、门禁治理高端酒店:酒店员工考勤、入住核验查看详情 > https://ai.baidu.com/dumu/cma 医疗测验报告单辨认 【 全新公布】 可辨认全国各地医疗测验报告单,返回:姓名、医院名称、报告单名称,以及查看具体我的项目的项目名称、后果、单位、参考区间等信息。模型针对文本歪斜、蜿蜒等状况专项优化,辨认准确率高;可利用于在线问诊场景,辅助医生疾速解读报告单。 查看详情 > https://ai.baidu.com/tech/ocr... 户口本辨认【 能力降级 】 新增反对户口本首页(户主页)辨认,包含户别、户主姓名、户号、住址、户主页工夫 5 个关键字段,单次调用低至0.0096元/次。 立刻体验 > https://ai.baidu.com/tech/ocr... 身份证辨认【 能力降级 】 新增身份证裁剪性能,可返回身份证全图裁剪的base64编码及地位信息,主动去除多余背景、改正拍摄角度,晋升业务应用便捷性;加【料】不加价,双十一大促狂欢,新客首购1元/W次,次数包限时6折。 查看详情 > https://ai.baidu.com/ai-doc/O... 银行卡辨认【 能力降级 】 新增反对“持卡人”字段辨认,可辨认信用卡侧面持卡人英文姓名 ,并专项优化凹凸字体辨认,进一步晋升银行卡号辨认准确率。 立刻体验 > https://ai.baidu.com/tech/ocr... 行驶证辨认、驾驶证辨认 【能力降级】 新增证件品质检测性能,对证件边框不残缺、遮挡状况进行告警提醒,不便过滤低质量的图像,晋升综合辨认成果。 查看详情 > https://ai.baidu.com/ai-doc/O... 内容审核平台 降级,反对审核后果可视化治理【性能降级】 业务人员可实时查看审核后果明细和违规起因散布,不便疾速调整细粒度审核标签,优化审核策略,实现内容危险即审、即见、即改。 审核后果数据统计:图形化展现各项审核服务的调用状况,包含分时段调用量、违规起因散布等,帮忙业务人员实时把握内容危险趋势,以便及时调整业务策略和应答措施审核后果可视化查问:可一键查看30天内的图像、文本审核记录明细数据,并反对导出本地文件,晋升人工抽验或复核的效率 申请试用> https://ai.baidu.com/support/...  图像审核-政治敏感辨认【 能力降级 】 政治/公众人物新增数十名暴恐、邪教敏感人物,及最新曝光的劣迹艺人。全面的公众人物库,紧跟监管政策要求,继续晋升审核全面性。 立刻体验 > https://ai.baidu.com/tech/ima... ...

November 15, 2021 · 1 min · jiezi

关于正则表达式:垃圾分类与AI的反碎片之旅

近年来,我国减速推广垃圾分类制度,2021年5月,国家发改委和住建部联结公布《“十四五”城镇生存垃圾分类和解决设施倒退布局》,要求到2025年底,京津冀及周边、长三角、粤港澳大湾区、长江经济带、黄河流域、生态文化试验区具备条件的县城根本建成生存垃圾分类和解决零碎;激励其余地区踊跃晋升垃圾分类和解决设施笼罩程度。 自此,垃圾分类成为国策。 你兴许会认为,这是一个脏活、累活、苦活,这样的构想也不为过。然而,你可能不晓得,这其中也蕴藏着微小的经济价值。 我国是人口大国,也是垃圾产生大国,2021年我国生存垃圾产量27097.2万吨。 因为统计口径的不同,对于垃圾分类市场的市场价值评估差异较大,但即便按较激进的计算,这也是一个千亿级市场;如果依照咱们的考察,仅仅一个宁波市,每年回收废弃物的价值就高达560亿人民币。 如果有一种办法,既能够解决垃圾分类中的苦、脏、累,又能晋升分拣效率、晋升行业效率,让“变废为宝”成为一件绝对轻松的工作,是否是一个社会期待的称心抉择? 为了这个指标,AI来了。 1聚焦宁波 6月24日,世界银行执行董事会批准给中国提供贷款4.3亿美元,其中的1.5亿美元贷款将用于宁波的垃圾分类。 宁波作为东部沿海城市,曾经开始采取了先进的垃圾治理、循环利用和预防措施,在国内属于当先地位。 因而,此次的世行资金,次要用于宁波全品类智能回收箱的落地,该我的项目联合智慧化治理、区块链记账等技术劣势对前段垃圾分类用户进行疏导、对垃圾回收流程进行大数据分析和智慧化治理,实现对生存垃圾分类端+回收端的清运回收可控治理、老本优化、数据分析,这也标记着宁波行将步入垃圾分类“数智”治理时代。 机会只留给有筹备的人,宁波蔚澜就是这样一家企业。此前,它是一家生产物联网配电柜的企业,公司负责人范世杰十分关注市场动态,在2018年底,当他看到央视开始宣传垃圾分类时,立即产生了一个念头——垃圾分类柜这种货色,实质上和物联网配电柜的差异不大。 范世杰立即开始市场考查,认为过后市场上生产的垃圾分类柜,以蔚澜的技术齐全能够做,于是立即在2018年11月投入研发,2019年3月拿出了样机。 然而在实践中,他也发现,垃圾分类柜其实波及到一个简单的经济闭环。例如,废玻璃的回收后,每吨只能卖70-80元,而废纸板每吨却高达2000元以上,但废纸板须要具体分类,因为不同类型的回收价格也不同,所以如果设施可能在前端对垃圾进行更精准的分类,经济效益和整个回收闭环都有很大的优化空间。 所有的垃圾中,最难解决的是厨余垃圾。个别人可能很难设想,散发着异味、容易糜烂的厨余垃圾其实有很高的经济价值,但厨余垃圾的解决也是最艰难的。很常见的一个问题就是,居民在分类时不够精密,把其它垃圾混淆在厨余垃圾里,这就波及到两个动作——须要对垃圾进一步分拣,还须要揭示居民留神相似问题。 所以真正的挑战,是减少厨余垃圾分拣这个环节,因为辨认难度大增。严格的说,没有主动破袋+厨余垃圾辨认的前两代产品,只能叫“主动分类柜”,只有这两个性能齐备了,能力叫“智能分类柜”。 让范世杰感到侥幸的是,公司新招来了AI技术总监杜一品。大家都晓得AI的人才奇缺,有残缺的AI开发教训的人更少。 杜一品来到蔚澜之前,也深知这家公司并没有残缺的AI团队,然而,他有底气,因为把握了新的工具——百度飞桨企业版EasyDL。 EasyDL(以及各类的AutoML/DL)的独特理念,就是“用AI技术来帮忙人们设计AI”,换句话说,开发一AI模型的流程中,波及的数据处理、特征提取、模型抉择、参数调节、训练部署等环节,都利用AI能力才实现了高度的自动化,通过简略的学习即可使用。 杜一品用EasyDL轻松实现了厨余垃圾辨认模型,但一个问题随之而生,对于厨余垃圾的辨认须要比拟高的AI算力,如果回传到云端计算,就须要公司添置大量的服务器、GPU卡等资源,这极大的减少了利润自身薄如刀锋的垃圾回收行业的老本。 就在这个时候,飞桨工程师给他支招,不须要购买宏大的AI计算设施,只须要一个百度的“EdgeBoard嵌入式AI计算卡”再搭配两个一般的摄像头就能够解决问题。 当杜一品把不到2000元的一块EdgeBoard计算卡交融进了蔚澜的垃圾分类柜后,他说了一句很感概的话:“咱们的设施老本只减少了大概2-3%,就让咱们从自动化时代进入了人工智能时代,不得不说,这样的技术才是产业落地真正须要的技术。” 事实上,百度飞桨的价值正在于此,它依据理论需要预制了大量能够灵便搭配的解决方案,即便是宁波蔚澜这样全公司只有极少数懂AI的技术人员的企业,也能够借助飞桨丰盛的产品和生态,从软件到硬件、从训练到部署,搞定整个设施的AI化,企业只须要极低的老本,就把公司带到了一个新的倒退境界。 范世杰因此很有感概的说,降级到第三代之后,宁波市场上,根本就没有咱们的对手了,这就是AI的力量。 其实,宁波蔚澜只是崛起的垃圾回收产业大军中的一员。 垃圾分类能够使垃圾资源利用收益更大化,给产业和社会发明更多价值,具备鼎力推广的必要性。从产业链协同角度而言,前端的垃圾分类服务、中端的垃圾分类转运、终端的厨余垃圾处理、渗滤液处理、垃圾焚烧等相干企业均将从中受害。 2不再只是“先行者” 一家企业,只有1个或很少几个懂AI的人员在做先导,对于这种景象,百度团体副总裁吴甜称之为“AI先行者”阶段。 对于AI落地,吴甜在分享飞桨通过与产业搭档的宽泛单干中所察看到的落地实际门路时,把这条路描述为三个阶段,也就是先行者探路阶段、工作坊利用阶段和工业大生产阶段。 吴甜发现,企业中的AI先行者,往往既不是一线业务人员,也不是高层管理者,而是公司内的一些资深工程师。他们懂业务、懂场景、有想法,想要冲破传统的业务现状,心愿借助AI的力量走出一条不一样的路。 咱们所说的垃圾分类行业,就是这样一个典型场景。 垃圾分类宏大的市场空间,吸引了投资人和创业者纷纷进场,成为当下创投行业的一大热门。企查查数据显示,我国垃圾分类相干的企业注册量出现疾速减少的趋势,2016年垃圾分类相干企业注册量有余1000家,2020年的注册量为3775家。 然而,能够想见的是,传统的垃圾分类企业要在全社会AI人才存在较大缺口的背景下,招募到有肯定程度的AI开发专才,是有显著的艰难的。 而对于这种状况,飞桨EasyDL、BML等低门槛的企业级AI开发工具,就极大的升高了垃圾分类企业的开发难度,呈现了“一个人能撑起一家企业的”的状况。 例如,宁波蔚澜的AI技术总监就通知笔者,在与飞桨EasyDL单干之前也考查过别的公司,包含阿里、华为及国外的平台,最终发现飞桨EasyDL绝对更好用,更人性化,他说:“EasyDL最大的益处,就是不须要浅近的算法根底和深度学习常识,也能够去操作它。集成到零碎里也很不便。” 3以生态能力反碎片化 事实上,EasyDL能提供端到端残缺的解决方案,包含用于数据服务的EasyData和用于边缘计算的EdgeBoard硬件等。 不得不提及的是,EasyDL能够在数据量较小的状况下依然获得不错的模型成果,这对于很多处于「投石探路」阶段的企业有很大的现实意义。 例如和中国香港的屈臣氏单干的深圳归谷智能公司,2019年接到香港环保署的我的项目,要做一个辨认瓶子的我的项目。尽管看起来简略,但理论中瓶子的形态各异。归谷智能一开始应用的是其余开源代码,但识别率有余六成,但在换为EasyDL之后,短时间达到了准确率90%以上。 令归谷智能的技术人员感到诧异的是,训练中只用了100多个瓶子、800多张照片,用EasyDL训练后的识别率、准确率,就差不多达到实战要求,“这个算法听起来不难,但咱们发现目前国内上同类算法能达到相似成果的公司预计也就是2、3家,其中有一个超难的进阶试验是,把两个高度相似的瓶子的条码调换,要求可能辨认。这个试验里只有用了EasyDL的机器辨认进去了,别的公司的设施一个都没有辨认进去。” 这典型的体现了在小数据量的状况下,EasyDL的训练成果。 其实,从以上几个故事中,咱们不难发现一些共性,那就是尽管场景很碎片化,但理论的实际难度却很高。 在目前AI落地的浪潮中,有一个存在争议的畛域就是,对于过于碎片化的场景,到底如何「反碎片化」,是用更多的业余人员+老本更高的定制化计划,抑或用学习曲线更低、企业业务人员本人稍加训练就能够上场的EasyDL。 从这些故事中咱们得出的论断是,让企业的开发人员本人具备AI能力无疑是最好的反碎片策略,但这必须建设在所依靠的深度学习平台的高度产业化上,在这个过程中,除了EasyDL、BML外,笔者还见到了犹如电商页面一样的EdgeBoard的选购页面,百度飞桨就是通过不放过每一个痛点,把通过上万个场景的千锤百炼的模型,与实际过程中能够遇到的数据问题、软硬件整合问题,都提供了端到端的一站式解决,才具备了残缺的反碎片能力。 垃圾分类只是咱们整个社会「数智化」的一个缩影,当这么传统的畛域也开始让AI开始施展魔力之时,咱们间隔AI融入工业大生产的指标,仿佛又近了一些。 百度AI开发者社区https://ai.baidu.com/forum ,为全国各地开发者提供一个交换、分享、答疑解惑的平台,让开发者在研发路上不再“孤军奋战”,通过一直地交换与探讨找出更好的技术解决方案。如果你想尝试各种人工智能技术、开辟利用场景,赶快退出百度AI社区,你对 AI 的所有畅想,在这里都能够实现! 扫描下方二维码,增加小助手微信「京东卡、小度定制周边、神秘礼盒、行李箱」等更多福利你来拿~

September 9, 2021 · 1 min · jiezi

关于正则表达式:正则表达式知识点归纳

什么是正则表达式?正则表达式是由一个字符序列造成的搜寻模式。当你在文本中搜寻数据时,你能够用搜寻模式来形容你要查问的内容。正则表达式能够是一个简略的字符,或一个更简单的模式。正则表达式可用于所有文本搜寻和文本替换的操作。 正则表达式创立字面量(间接量)// 在一对反斜线中写正则表达式内容,如/abc/// 正则表达式外面不须要加引号 不论是数字型还是字符串型var pattern=/正则表达式/修饰符;var pattern=/qwer/igm;构造函数//结构正则表达式的实例,如new RexExp('abc')//外部传入的参数为字符串/字符串的变量var reg =new RegExp("正则表达式","修饰符")var reg =new RegExp("hello","g");字符的分类一般字符 字母、数字、下划线、汉字、没有非凡含意的符号(,;!@等) 实际上不是特殊字符的字符都是一般字符 特殊字符 \:将特殊字符本义成一般字符 模式修饰符 i:ignoreCase,匹配时漠视大小写 m:multiline,多行匹配 g:global,全局匹配 字面量创立正则时,模式修饰符写在一对反斜线后 正则表达式实例办法exec---->>可用来匹配字符串中合乎正则表达式的字符串如果匹配到,返回值是一个result数组:[匹配的内容,index: 在str中匹配的起始地位,input: 参数字符串,groups: undefined],r如果匹配不到则返回null 例如: var str = 'hello world hello';var reg1 = /hello/;var reg2 = /hello/g; //g示意全局匹配,也就是会匹配到str中所有满足正则表达式条件的字段var reg3 = /exe/g;console.log(reg1.exec(str)); //[ 'hello', index: 0, input: 'hello world hello', groups: undefined ]console.log(reg2.exec(str)); //[ 'hello', index: 0, input: 'hello world hello', groups: undefined ]console.log(reg3.exec(str)); // null //str中并不存在exe字段,所以输入null// 如果是全局模式的正则验证 还能够应用循环进行输入var reg = /hello/g;var str = 'hello world hello hello good';while(true) var result = reg.exec(str); if(!result){ break; } console.log(result[0],result["index"],reg.lastIndex); //hello 18 23}须要留神的中央就是 ...

September 1, 2021 · 3 min · jiezi

关于正则表达式:人人皆可成为AI开发者百度世界大会官宣百度松果学堂成立

8月18日,百度联结央视新闻举办“世界大会2021”大会,全景出现 AI 赋能千行百业和百姓生活。会上,百度 CTO 王海峰发表成立百度松果学堂,打造源于产业的 AI 人才培养平台,致力于让每个人都能更便捷地获取 AI 常识,学习 AI 技术。 ▲ 百度 CTO 王海峰发表成立百度松果学堂 作为业界最受注目的科技盛会之一,本届百度世界大会采纳 XR、AR、虚构场景、3D 出现等新技术,集中展现了百度在智能出行、AI 产业利用、芯片研发等方面的最新成绩。 在技术革新与利用落地的背地,是对人才的需要。当下,AI 技术创新沉闷、产业利用规模不断扩大,各行各业须要大量的、不同档次的开发者。百度 CTO 王海峰认为,人才培养是一件须要长期投入的事,“咱们心愿通过百度松果学堂为我国 AI 人才培养做出一点奉献。” 百度松果学堂是一个源于产业实际的 AI 人才培养平台,它集 AI 根底课程、实际教学、技术比赛、产业实训、科研基金等资源于一体,聚焦学界与产业界的各类需要,汇聚工业届和学界顶尖专家智库,通过技术赋能高校教育和行业利用,全方位保障各阶段开发者的 AI 学习与实际。 据理解,百度松果学堂将面向中小学生提供多类 AI 课程内容、科普书籍、趣味竞赛;面向大学生提供对应 AI 课程、技术比赛、共建的高校实训室和产业学院等;面向高校教师专门安顿对口的 AI 师资培训,并提供大量算力资源辅助一线老师教学;面向企业开发者,不仅提供与产业紧密结合的阶段性 AI 课程,还有主动驾驶、智能云、区块链等相干细分畛域的培训内容。 除此之外,百度松果学堂还筹备了面向各类人群的 AI 配套教材、AI 技术利用比赛、多畛域学习社区和丰盛的学习基金,打算与10+学会、100+政府机构、1000+院校、100000+企业独特携手,打造 AI 人才培养新生态,为中国 AI 产业倒退晋升造血力。 作为国内 AI 头雁,百度始终在踊跃布局“人工智能+X”复合型人才培养,从2011年起就正式提出凋谢钻研打算,2015年1月正式改名为百度松果打算,心愿通过与高校的专家学者单干,钻研有价值的企业前沿技术问题。此次百度松果学堂的成立,不仅是对百度过往 AI 人才培养动作的迭代降级,也为百度将来打算造就500万 AI 产业和技术人才厘清了方向,致力于让“人人皆可成为 AI 开发者”成为事实。 百度AI开发者社区https://ai.baidu.com/forum ,为全国各地开发者提供一个交换、分享、答疑解惑的平台,让开发者在研发路上不再“孤军奋战”,通过一直地交换与探讨找出更好的技术解决方案。如果你想尝试各种人工智能技术、开辟利用场景,赶快退出百度AI社区,你对 AI 的所有畅想,在这里都能够实现! 扫描下方二维码,增加小助手微信「京东卡、小度定制周边、神秘礼盒、行李箱」等更多福利你来拿~

August 23, 2021 · 1 min · jiezi

关于正则表达式:正则^

号外公众号的名字还是简略易懂,一看起来就晓得是干嘛的,尽管CodeNone不错,但其实是模拟一个公众号的前辈,而且英文总是有点不难受。为了更加的本人一点,特改名为 咖啡编程两个含意,一个是cafe babe,一个是排汇宇宙能量,刚刚好全笼罩本身的状况,dddd。注释是不是到处可见的正则表达式 是不是很艳羡他人熟练地应用正则表达式而本人不会 是不是想要入门正则表达式要么是长视频要么是一本书 是不是感觉这种形式看着很营销,很不难受 没错,上述除了正则表达式这五个字,其余全是废话,接下来要说的可能不肯定很全,然而相对能达到28准则,也就是把握20%的常识应答80%的工作场景。然而,要想真正把握这5个字,无他,唯手熟而 正则表达式所有都是紧挨着的,所有都是字符,摈弃掉“加空格丑陋,应用+号进行拼接”的想法根底写什么匹配什么 cat =>I have some pets, <u>cat</u>s, dogs and pigs. ⭕️ Cat => The cat sat on the mat. ❌ 123 => 56789<u>123</u>45 ⭕️ 123 => 12456 ❌ 元字符这也是网上的说法,其实依照我的来就是特殊字符 . * + ?.示意匹配除换行外任一字符.at => 示意at紧跟着某个字符 => The <u>cat</u> <u>sat</u> on the <u>mat</u>. => 有3处匹配 c.t => 示意c紧跟着某个字符紧跟着t => The <u>cat</u> sat on the mat. => 有1处匹配 *匹配后面的表达式0次或者屡次[a-z]* => 示意匹配0个或者多个字符 => T<u>he cat sat on the mat</u> => 有13处匹配 ...

August 22, 2021 · 2 min · jiezi

关于正则表达式:百度世界大会2021-与时代共振AI让生活更好

8月18日,以“AI 这时代,星辰大海”为主题的2021百度世界大会在百度 App、央视新闻客户端等平台同步直播。本次大会由总台央视主持人撒贝宁负责主持,在3个小时的直播中活泼展现百度人工智能在出行、生存、产业、自主翻新等畛域如何改善社会民生。百度创始人董事长兼 CEO 李彦宏在直播中示意:“AI,也是爱,是技术和温度联合在一起。”“让每一个人都感触到技术带来的扭转,这就是技术的价值。” 百度创始人、董事长兼 CEO 李彦宏与撒贝宁在央视直播间 作为业界最受注目的科技盛会,百度往年最新的技术成绩集中亮相:通过8年倒退,百度 Apollo 从技术验证阶段进入到规模化商业经营阶段,公布具备跨时代意义的百度“汽车机器人”和无人车出行服务平台“萝卜快跑”;百度挪动生态的外围翻新和服务化新进展失去全面展示,语音搜寻、视觉搜寻等智能搜寻能力和智能服务能力继续进化,可精确辨认快语速、中英文混淆、多轮发问、轻声搜寻及满足各种场景下的智能服务需要;小度围绕本身 AI 语音助手核心技术劣势,间断公布4款智能新品,构建起全场景智能生存;依靠“云智一体”的独特劣势,百度智能云全场景赋能减速产业智能化降级;百度 AI 技术多年积攒和产业实际的集大成百度大脑降级至7.0,百度自研昆仑 AI 芯片公布第2代产品,推动百度在 AI 畛域继续翻新。 本次大会是总台首档挪动端 4K 直播节目,直播间内更是搭建了38米x5米的 8K 超高清巨型弧屏,通过 AI+VR,打造多个沉迷式场景,带用户体验裸眼 3D 的舞台效果。通过直播间和外景地的实时联动,勾画出 AI 扭转出行、生存、产业的蓝图,将百度最新的 AI 成果展当初观众眼前,为全国观众带来一场全民 AI 科普盛宴。龚俊数字人现场唱跳神曲、金晨与百度无人车拍出“时尚大片”、连线国家跳水队周继红揭晓“梦之队”中的“AI 教练”、撒贝宁与祝融号数字人“吟诗作对”等彩蛋,让网友们大呼过瘾。 百度汽车机器人可能通过三重能力服务于人:首先具备 L5 级主动驾驶能力,不仅无需人类驾驶,而且比人类驾驶更平安;其次具备语音、人脸识别等多模交互能力,剖析用户潜在需要,被动提供服务;此外汽车机器人还具备自我学习和一直降级能力,是服务各种场景的智慧体。 \百度创始人、董事长兼 CEO 李彦宏与撒贝宁体验汽车机器人 联合了 Apollo 过来两年的经营实际,百度推出无人车出行服务平台“萝卜快跑”,能向公众提供商业经营和多元化增值服务,减速全民无人化出行时代到来。在全国多地,百度 Apollo 无人车正为公众提供无人化出行服务,截至2021年上半年,百度 Apollo 主动驾驶在北京、广州、长沙、沧州四城凋谢面向公众的出行服务,累计接待乘客超过40万人次。百度 Apollo 已取得336张主动驾驶测试牌照,曾经在全国30个城市发展主动驾驶测试,路测里程超过1400万公里,主动驾驶专利数量超过2900件。 Apollo 赋能车企智能化则推动主动驾驶走进公众生存。百度团体资深副总裁、智能驾驶事业群总经理李震宇示意:“主动驾驶能力曾经成为智能汽车的决胜洼地。”通过多年技术积攒,百度 Apollo 一直将主动驾驶外围劣势开释到汽车智能化畛域,助力车企打造具备继续进化能力的智能汽车,为用户提供“开车释怀”“停车省心”“用车顺心”的智能汽车体验。 百度团体资深副总裁、智能驾驶事业群总经理李震宇介绍 Apollo 业务 除了打造“智慧的车”,百度还致力于与“聪慧的路”协同,打造兼容当下面向未来的 AI 出行解决方案。百度在保定84个路口部署了 AI 智能信控系统,造成的一条条“绿波带”使车辆行程工夫均匀缩短约20%。目前,百度 ACE 智能交通正在深耕智能网联、智慧交管、智慧高速、智慧停车多条赛道,相干成绩已在北京、广州、上海、重庆近30多个城市落地。 领有5.8亿月活的百度 App 背地,AI 推动搜寻朝人格化和服务化两大方向倒退。百度团体执行副总裁沈抖在直播中称,百度 App 语音辨认准确率曾经达到98%,超过人耳程度。不论是轻声、快语速、长问题、还是中英文夹杂、粤语、轻方言,百度 App 都能帮忙找到最好答案。百度 App 代言人龚俊不仅亲自上阵,通过一个短片带来 AI 生存的体验介绍,全面展示了百度 App 带来的智能生存,还专门定制了一个数字人在大会上互动表演,AI 科技感十足。此外,龚俊专属语音包也在百度 App 上线,网友能够在百度 App 上抉择龚俊的声音播报新闻。不仅仅是百度 App,百度旗下难看视频、百度衰弱、百度网盘、百度一刻相册等一系列“AI 高浓度”产品造成的挪动利用矩阵,都在用 AI 让用户“百度一下,生存更好”。 ...

August 19, 2021 · 1 min · jiezi

关于正则表达式:正则表达式中一些难理解的匹配方式

(?:pattern)()示意捕捉分组,()会把每个分组里的匹配的值保存起来,从左向右,以分组的左括号为标记,第一个呈现的分组的组号为1,第二个为2,以此类推 (?:)示意非捕捉分组,和捕捉分组惟一的区别在于,非捕捉分组匹配的值不会保存起来 import rea = "123abc456ww"pattern = "([0-9]*)([a-z]*)([0-9]*)"print(re.search(pattern,a).group(0,1,2,3))pattern = "(?:[0-9]*)([a-z]*)([0-9]*)"print(re.search(pattern,a).group(0,1,2)) 能够看到 (?:[0-9]) 匹配的第一个 [0-9] 没有保留下来,即没有保留匹配到的“123”,而([0-9]*)则保留了下来。 python中group(0)返回匹配到的整体 (?:pattern)在应用 "或" 字符 (|) 来组合一个模式的各个局部是很有用。例如,'industr(?:y|ies)' 就是一个比 'industry|industries' 更简略的表达式。因为咱们独自存储下 “y” 或者 “ies” 没有什么意义 a = "British industry"pattern = "industr(?:y|ies)"print(re.search(pattern,a).group(0))pattern = "industr(y|ies)"print(re.search(pattern,a).group(0, 1))//group(1)会报错,因为没有保留捕捉到的“y”(?=pattern)正向必定预查(look ahead positive assert),匹配pattern后面的地位。简略说,以 xxx(?=pattern)为例,就是捕捉以pattern结尾的内容xxx 1、这是一个非获取匹配,也就是说,该匹配不须要获取供当前应用。 industr(?=y|ies) ---> "industr"2、预查不耗费字符,也就是说,在一个匹配产生后,在最初一次匹配之后立刻开始下一次匹配的搜寻,而不是从蕴含预查的字符之后开始。 (?!pattern)正向否定预查(negative assert),在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不须要获取供当前应用。 简略说,以 xxx(?!pattern)为例,就是捕捉不以pattern结尾的内容xxx 例如"Windows(?!95|98|NT|2000)"能匹配"Windows3.1"中的"Windows",但不能匹配"Windows2000"中的"Windows"。预查不耗费字符,也就是说,在一个匹配产生后,在最初一次匹配之后立刻开始下一次匹配的搜寻,而不是从蕴含预查的字符之后开始。 (?<=pattern)反向(look behind)必定预查,与正向必定预查相似,只是方向相同。 简略说,以(?<=pattern)xxx为例,就是捕捉以pattern结尾的内容xxx。 例如,"(?<=95|98|NT|2000)Windows"能匹配"2000Windows"中的"Windows",但不能匹配"3.1Windows"中的"Windows"。 (?<!pattern)简略说,以(?<!pattern)xxx为例,就是捕捉不以pattern结尾的内容xxx。 反向否定预查,与正向否定预查相似,只是方向相同。例如"(?<!95|98|NT|2000)Windows"能匹配"3.1Windows"中的"Windows",但不能匹配"2000Windows"中的"Windows"。 贪心匹配和非贪心匹配var str="abcaxc";var p=/ab.*c/;//贪心匹配str.match(p);//abcaxcvar p2 = /ab.*?c/; //非贪心匹配str.match(p2);//abc贪心匹配:正则表达式个别趋向于最大长度匹配,也就是所谓的贪心匹配。如下面应用模式p匹配字符串str,后果就是匹配到:abcaxc(ab.*c)。非贪心匹配:就是匹配到后果就好,就少的匹配字符。如下面应用模式p2匹配字符串str,后果就是匹配到:abc(ab.*?c)。

August 8, 2021 · 1 min · jiezi

关于正则表达式:前端中正则表达式的相关方法

str.match(regexp)办法str.search(regexp)返回第一个匹配项的地位,如果未找到,则返回-1 var result = 'javascript'.search(/script/) console.log(result) // 4str.replace(str|regexp,str|func)办法str.replace(str|regexp,str|func)用以执行检索与替换操作。如果正则表达式中设置了修饰符g,那么源字符串中所有与模式匹配的子串都将替换成第二个参数指定的字符串;如果不带修饰符g,则只替换所匹配的第一个子串。 console.log('12-34-56'.replace(/-/, ':')) // 12:34-56console.log('12-34-56'.replace(/-/g, ':')) // 12:34:56str.split(regexp|substr,limit)应用正则表达式(或子字符串)作为分隔符宰割字符串 console.log('12-34-56'.split(/-/)) // ["12", "34", "56"]str.match(regexp)在字符串str中找到匹配regexp的字符,它有3种模式:(1)如果 regexp 不带有 g 标记,则它以数组的模式返回第一个匹配项,其中蕴含分组和属性 index(匹配项的地位)、input(输出字符串,等于 str) let str = 'I love JavaScript'let result = str.match(/Java(Script)/)console.log(result) // ["JavaScript", "Script", index: 7, input: "I love JavaScript", groups: undefined](2)如果 regexp 带有 g 标记,则它将所有匹配项的数组作为字符串返回,而不蕴含分组和其余详细信息。 let str = 'I love JavaScript'let result = str.match(/Java(Script)/g)console.log(result) // ["JavaScript"](3)如果没有匹配项,则无论是否带有标记 g ,都将返回 null。 RegExp对象定义了两个用于执行模式匹配的办法regexp.test(str)它的参数是一个字符串,如果蕴含正则表达式的一个匹配后果,则返回true let str = 'I love JavaScript'console.log(/love/i.test(str)) // trueregexp.exec(str)和后面介绍的String.match()办法类似,它的参数是一个字符串。依据正则表达式是否带有标记g,它的行为有所不同。如果没有g,那么 regexp.exec(str) 返回的第一个匹配与 str.match(regexp) 完全相同;如果有标记g,那么调用 regexp.exec(str) 会返回第一个匹配项,并将紧随其后的地位保留在属性 regexp.lastIndex 中。 下一次同样的调用会从地位 regexp.lastIndex 开始搜寻,返回下一个匹配项,并将其后的地位保留在 regexp.lastIndex 中。这种非凡的行为使咱们能够在用正则表达式匹配字符串的过程中重复调用exec()。 ...

August 8, 2021 · 1 min · jiezi

关于正则表达式:在线正则表达式大全测试

在线正则表达式大全测试在线正则表达式大全测试 本工具提供在线正则表达式的测试,反对替换,客户端实时计算,数据实时更新。 https://tooltt.com/regexp/

July 28, 2021 · 1 min · jiezi

关于正则表达式:祝贺中国跳水队夺金百度智能云挺敢做梦的人

“总分326.40分!远超第二名25.62分!祝贺施廷懋、王涵毫无悬念地夺得跳水男子双人3米板我的项目金牌!祝贺中国跳水队!”东京奥运会传来喜报。 里约奥运会男子3米板单人和双人双料冠军施廷懋携手世界冠军王涵出战,最终这对组合以326.4分排名第一,为中国跳水“梦之队”夺得首金,这也是中国代表团在本届奥运会的第4金。 两位跳水运动员的杰出体现,放弃了中国跳水在男子跳板我的项目上的统治力,为中国跳水“梦之队”博得开门红! 此前,这被认作是“理所应当”的金牌。中国跳水“梦之队”自1984年洛杉矶奥运会以来,曾经为中国奥运军团奉献了40枚金牌,在国内所有静止我的项目中高居榜首,备受瞩目;从参赛阵容来看,10名选手中有9人是奥运冠军或世界冠军,实力强劲,这无疑将公众的期待值拉满。 本届奥运会跳水首金获得者——施廷懋和王涵都领有世界顶尖程度,被寄予厚望。两人曾在2010年广州亚运会搭档摘得双人我的项目的金牌,自2018年11月再次搭档出战双人较量以来,施廷懋和王涵所向无敌,包揽了全副国内外赛事的冠军,是公认的默契搭档。现在,两位30岁“老将”携手登上东京奥运会金牌领奖台,升国旗唱国歌,光荣加身! 但在聚光灯的背地,幻想的实现并非一日之功。跳水静止作为一项超高速静止,从起跳到落水只有2秒钟工夫。随着跳水我的项目倒退迅猛,动作难度也越来越大。这意味着在2秒钟内,运动员们须要更加刻苦的训练,打磨实现更高难度的动作,一直冲破自我成为“难度王”,才有机会取得更高的技术分并突破世界纪录。 在此之际,百度智能云正式公布《2秒追梦》品牌片,记录这些可恶的人背地的故事,挺敢做梦的人。 视频链接: https://baidu-ai-ar-151238020... 在运动员眼里,那些咱们不以为然、常被疏忽的2秒钟,是他们一直冲破体能极限后的决胜时刻,是展示台下十年苦练本事的高光霎时,也是跳水运动员翻身转体后的完满一跳。为此,中国跳水队运动员肩负国家荣誉,不甘平庸、永不言败,疫情期间从不停训,充分利用训练的每一分钟,更在惯例备战外做了新的尝试。 在古代体育谋求高效、精准的趋势下,使用 AI 技术辅助剖析、训练调整,成为了各国当先运动队晋升实力和问题的大趋势,体育事业正在迈入迷信智能训练的新阶段。 中国跳水队在赛前训练中,百度智能云为其打造了国内首个“3D+AI”跳水训练零碎,笼罩跳水训练的各个环节。针对跳水训练中的痛点,百度智能云基于“3D+AI”技术,首次实现“云-边-端”软硬一体的 AI 辅助训练零碎,通过 AI 技术对训练视频进行摘要、动作抽取、姿态纠正等解决,疾速进行演绎整顿,冲破了体育运动定量评估与数据分析的难题,将竞技体育更精细化地定格在工夫和空间维度,让体育训练更加迷信、智能、正当、无效,实现了“看得清”、“看得准”、“看得全”和“看得懂”四大外围能力。 这几个月来,零碎辅助训练的成果突出,运动员的训练效率晋升了20%。在跳水队运动员不懈练习、全力以赴进步百分之一甚至千分之一问题的同时,百度智能云打造的“国家队 AI 教练”更是炼就了“火眼金睛”和“最强大脑”,看清细节、快速反应、实时打分、超强记忆,这是百度智能云作为技术撑持,对跳水队的最强助攻。 分秒之间见问题,是跳水较量的性质;实现“一根针”入水的完满一跳,则是跳水队的终极目标。当“冠军模型”遇上“王牌数据”,敢为人先的中国跳水队拥抱科技、改革翻新,用先进的技术让日常训练更为迷信无效。 百度智能云有幸成为跳水健儿的弱小助力,必将施展所能,用技术为中国跳水“梦之队”精益求精,共赴夺冠征程。今后,百度智能云将持续把 AI 技术与各类静止联合,辅助体育健儿们在赛场上一直超越自我,获得佳绩,力挺这群敢做梦的人! 百度AI开发者社区https://ai.baidu.com/forum ,为全国各地开发者提供一个交换、分享、答疑解惑的平台,让开发者在研发路上不再“孤军奋战”,通过一直地交换与探讨找出更好的技术解决方案。如果你想尝试各种人工智能技术、开辟利用场景,赶快退出百度AI社区,你对 AI 的所有畅想,在这里都能够实现! 扫描下方二维码,增加小助手微信「京东卡、小度定制周边、神秘礼盒、行李箱」等更多福利你来拿~

July 26, 2021 · 1 min · jiezi

关于正则表达式:在线正则表达式可视化工具

在线正则表达式可视化工具在线正则表达式可视化工具 本工具提供在线正则表达式的测试,反对替换,客户端实时计算,数据实时更新。 https://tooltt.com/regulex/

July 25, 2021 · 1 min · jiezi

关于正则表达式:正则规则与常用正则

// 表达式 .* 就是单个字符匹配任意次,即贪心匹配。 // 表达式 .*? 是满足条件的状况只匹配一次,即最小匹配.// 必定逆序环视 (?<=expresion) 子表达式可能匹配左侧文本// 否定逆序环视 (?<!expresion) 子表达式不能匹配左侧文本// 必定程序环视 (?=expresion) 子表达式可能匹配右侧文本// 否定程序环视 (?!expresion) 字表达式不能匹配右侧文本// 联合上述 (?=.*expresion) 必须匹配左侧表达式// . 匹配除换行符以外的任意字符// \w 匹配字母或数字或下划线// \s 匹配任意的空白符// \d 匹配数字// \b 匹配单词的开始或完结// ^ 匹配字符串的开始// $ 匹配字符串的完结// * 反复零次或更屡次// + 反复一次或更屡次// ? 反复零次或一次// {n} 反复n次// {n,} 反复n次或更屡次// {n,m} 反复n到m次// \W 匹配任意不是字母,数字,下划线,汉字的字符// \S 匹配任意不是空白符的字符// \D 匹配任意非数字的字符// \B 匹配不是单词结尾或完结的地位// [^x] 匹配除了x以外的任意字符// [^aeiou] 匹配除了aeiou这几个字母以外的任意字符// /g 示意该表达式将用来在输出字符串中查找所有可能的匹配,返回的后果能够是多个。如果不加/g最多只会匹配一个// /i 示意匹配的时候不辨别大小写,这个跟其它语言的正则用法雷同// /m 示意多行匹配。什么是多行匹配呢?就是匹配换行符两端的潜在匹配。影响正则中的^$符号// /s 与/m绝对,单行模式匹配。// /e 可执行模式,此为PHP专有参数,例如preg_replace函数。// /x 疏忽空白模式。// 这些修饰符是能够混合应用的。例如 /ig、/ie等。const regExp = { //局部 字母、数字、+*-/_三种中的两种组成 part_letterNumberSymbol: /^(([0-9]+[a-zA-Z]+)|([0-9]+[\/\*\-\+\_]+)|([a-zA-Z]+[0-9]+)|([a-zA-Z]+[\/\*\-\+\_]+)|([\/\*\-\+\_]+[a-zA-Z]+)|([\/\*\-\+\_]+[0-9]+))([a-zA-Z]*[\/\*\-\+\_]*[0-9]*)+$/, //必须 字母、数字 required_letterNumber: /^(?=.*[0-9])(?=.*[a-zA-Z])(.{2,})$/, //只能 字母、数字 can_numberAndletter: /^[A-Za-z0-9]+$/, // 只能 字母、数字、下划线 can_number_letter_Underline: /^[A-Za-z0-9\_]+$/, //只能 字母 can_letter: /^[A-Za-z]+$/, //只能 字母、汉字 can_numberAndcharacters: /^[a-zA-Z\u4e00-\u9fa5]+$/, //只能 汉字、字母、数字 can_letterNumberChinese: /^[A-Za-z0-9\u4e00-\u9fa5]+$/, //只能 汉字、字母、数字、下划线 can_charactersNumbersUnderscores: /^[\w\u4e00-\u9fa5]+$/, //英文结尾,只能英文小写,数字,下划线 startLetter_number_letter_Underline: /^[a-z]+[a-z0-9\_]*$/, // 手机号正则,用处例如:验证手机号 phone: /^1\d{10}$/, // 微信号码 wechat: /^[a-zA-Z]([-_a-zA-Z0-9]{5,20})+$/, // 邮箱正则 email: /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/, // IP地址 ip: /^(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)$/, // 非数字结尾 beginNoNumber: /^\D{1}.*$/, // 经纬度 lonLat: /^[+-]?\d{1,3}(\.\d{1,6})?,[+-]?\d{1,3}(\.\d{1,6})?$/, /* 非法uri*/ urlregex: /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/, // 浮点数 能够带+-符号 floatNumber: /^[-+]?\d+(\.\d+)?$/, //座机号码 landline: /^0[0-9]{2,3}-[0-9]{8}$/, //车牌号 carPlate: /^[\u4e00-\u9fa5]{1}[A-Z]{1}[A-Z_0-9]{5}$/, //支付宝 aliPay: /^[/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*][1\d{10}]$/, //财付通 tenPay: /^[/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*][1\d{10}]$/, //中国身份证 chinaIdCard: /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/, //特殊字符 specialChar: /[`~!@#\$%\^\&\*\(\)_\+<>\?:"\{\},\.\\\/;'\[\]]/im}

May 28, 2021 · 1 min · jiezi

关于正则表达式:正则表达式字母数字下划线和一些特殊字符

(/^[-\w+!@#$%^&*]*$/).test('ig-_ades2vel') 除了非中文字符,其余字符按需增加到中括号中 另:element中form加rules检测,数据绑定要把v-model换成:model否则会存在自身曾经有值但表单还有报错的状况

May 28, 2021 · 1 min · jiezi

关于正则表达式:正则表达式匹配

蕴含且不蕴含匹配

May 28, 2021 · 1 min · jiezi

关于正则表达式:个人学习系列-正则表达式

整顿一下正则表达式的速配内容一、校验数字的表达式数字:^[0-9]*$n位的数字:^\d{n}$至多n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零结尾的数字:^(0|[1-9][0-9]*)$非零结尾的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$带1-2位小数的负数或正数:^(\-)?\d+(\.\d{1,2})?$负数、正数、和小数:^(\-|\+)?\d+(\.\d+)?$有两位小数的正实数:^[0-9]+(.[0-9]{2})?$有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$非负整数:^\d+$ 或 ^[1-9]\d*|0$非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$二、校验字符的表达式汉字:^[\u4e00-\u9fa5]{0,}$英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$长度为3-20的所有字符:^.{3,20}$由26个英文字母组成的字符串:^[A-Za-z]+$由26个大写英文字母组成的字符串:^[A-Z]+$由26个小写英文字母组成的字符串:^[a-z]+$由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}中文、英文、数字包含下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$中文、英文、数字但不包含下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$能够输出含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+禁止输出含有~的字符[^~\x22]+其它: .*匹配除 \n 以外的任何字符。/[\u4E00-\u9FA5]/ 汉字/[\uFF00-\uFFFF]/ 全角符号/[\u0000-\u00FF]/ 半角符号三、非凡需要表达式Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}身份证号(15位、18位数字):^\d{15}|\d{18}$短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$帐号是否非法(字母结尾,容许5-16字节,容许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$明码(以字母结尾,长度在6~18之间,只能蕴含字母、数字和下划线):^[a-zA-Z]\w{5,17}$强明码(必须蕴含大小写字母和数字的组合,不能应用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$日期格局:^\d{4}-\d{1,2}-\d{1,2}一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$钱的输出格局:1.有四种钱的示意模式咱们能够承受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$2.这示意任意一个不以0结尾的数字,然而,这也意味着一个字符"0"不通过,所以咱们采纳上面的模式:^(0|[1-9][0-9]*)$3.一个0或者一个不以0结尾的数字.咱们还能够容许结尾有一个负号:^(0|-?[1-9][0-9]*)$4.这示意一个0或者一个可能为负的结尾不为0的数字.让用户以0结尾好了.把负号的也去掉,因为钱总不能是负的吧.上面咱们要加的是阐明可能的小数局部:^[0-9]+(.[0-9]+)?$5.必须阐明的是,小数点前面至多应该有1位数,所以"10."是不通过的,然而 "10" 和 "10.2" 是通过的:^[0-9]+(.[0-9]{2})?$6.这样咱们规定小数点前面必须有两位,如果你认为太刻薄了,能够这样:^[0-9]+(.[0-9]{1,2})?$7.这样就容许用户只写一位小数.上面咱们该思考数字中的逗号了,咱们能够这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$8.1到3个数字,前面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$备注:这就是最终后果了,别忘了+能够用*代替如果你感觉空字符串也能够承受的话(奇怪,为什么?)最初,别忘了在用函数时去掉去掉那个反斜杠,个别的谬误都在这里 其余xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$中文字符的正则表达式:[\u4e00-\u9fa5]双字节字符:[^\x00-\xff] (包含汉字在内,能够用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))空白行的正则表达式:\n\s*\r (能够用来删除空白行)HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? /> (网上流传的版本太蹩脚,下面这个也仅仅能局部,对于简单的嵌套标记仍旧无能为力)首尾空白字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (能够用来删除行首行尾的空白字符(包含空格、制表符、换页符等等),十分有用的表达式)腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址时有用)IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))IP-v4地址:\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b (提取IP地址时有用)校验IP-v6地址:(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))子网掩码:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))校验日期:^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$(“yyyy-mm-dd“ 格局的日期校验,已思考平平年。)抽取正文:<!--(.*?)-->查找CSS属性:^\\s*[a-zA-Z\\-]+\\s*[:]{1}\\s[a-zA-Z0-9\\s.#]+[;]{1}提取页面超链接:(<a\\s*(?!.*\\brel=)[^>]*)(href="https?:\\/\\/)((?!(?:(?:www\\.)?'.implode('|(?:www\\.)?', $follow_list).'))[^" rel="external nofollow" ]+)"((?!.*\\brel=)[^>]*)(?:[^>]*)>提取网页图片:\\< *[img][^\\\\>]*[src] *= *[\\"\\']{0,1}([^\\"\\'\\ >]*)提取网页颜色代码:^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$文件扩展名效验:^([a-zA-Z]\\:|\\\\)\\\\([^\\\\]+\\\\)*[^\\/:*?"<>|]+\\.txt(l)?$判断IE版本:^.*MSIE [5-8](?:\\.[0-9]+)?(?!.*Trident\\/[5-9]\\.0).*$附表: ...

May 24, 2021 · 1 min · jiezi

关于正则表达式:记录正则表达式引发的血案

遇到问题前些日子在做线上验品抽检需要,在开发发动检测工作页面时遇到一个字段校验的诉求,具体要求:“用户能够填入多组 ID,每组 ID 能够由商品 ID 和 SKU ID 独特形成,也能够只由其中一种 ID 形成,两种 ID 之间通过冒号分隔;每组 ID 之间又须要通过英文逗号分隔”。这不就是一个表单字段格局校验场景吗?因而很天然的想到应用正则表达式来解决,在捣腾了几分钟之后写好一个正则表达式: /^(((d+:d+)+)|(,(d+:d+)+)|(d)+|(,(d+)+)){0,}$/在 chrome 浏览器控制台简略测试了一下顺利通过!很完满~ 可是打包发到日常环境后,测试妹子找到我反馈说“这个页面很卡,而且是卡死的那种!”。 定位问题通过排查后发现每次都是填入了商品 ID 之后产生的页面假死,于是判定问题应该是出在表单字段的 validator 函数,当我把这个 validator 函数正文之后发现页面恢复正常!然而这个 validator 函数是 formily 提供进去的钩子函数,钩子函数自身不会有问题,而且我在钩子函数外面的自定义逻辑也很简略,因而能够笃定问题出在正则表达式判断这里! 然而我在 chrome 控制台外面明明测试的很丝滑,怎么会呈现卡死呢?!于是让测试妹子把用例发我一看: 10253:23091,10253:23091,10253:23091,10253:23091,10253:23091,10253:23091,10253:23091,10253:23091,10253:23091,10253:23091,10253:23091,10253:23091,10253:23091,10253:23091,10253:23091 而后再把后面那段正则表达式语句进行可视化剖析: 原来是我本人的用例太过简略,基本没有触发到正则的性能问题。以前始终据说正则表达式可能会造成性能问题,但因为始终都没有真正遇到过,所以也没有真正上心去理解正则执行原理,于是乎触发到常识盲区造成这个 bug。 如何解决问题产生的起因尽管被定位到,然而我不太可能在短时间内写出一个合乎需要的高性能正则表达式,因为测试妹子还等着我修掉 bug 后持续往下走。于是我筹备先用一个长期计划来解决,长期计划的思路:把以后这个复杂度大的校验规定,合成为几个简略的校验规定,再把他们一起的后果串联起来。具体实现如下图: 把用户填入的很长很简单的字符串依照英文逗号为分隔符的规定先进行分组,而后再用一个简略的正则表达式去判断每组 ID 的格局是否满足,因为每组 ID 的长度都不长,所以不会触发性能问题。 在解决当务之急后,我就开始收集正则表达式相干的学习材料和博客,在 ATA 上搜寻到好几篇与我的问题高度类似的文章《一个由正则表达式引发的血案》、《一个正则表达式flag引发的血案》、《正则表达式的RegExp.test函数》,然而这些文章各有侧重点,而我冀望的是更加零碎和全面的学习材料。通过一番搜寻后,终于在豆瓣上发现了《精通正则表达式》这本书。不过我本人目前还没啃完,所以上面不会讲原理,等前面看完了再来写个读后感和引擎原理剖析~ 在看书的过程中我发现一个新问题:不是每个业务场景都须要咱们写出一个高性能的正则表达式,咱们在开发业务的时候更多想要的是“如何疾速发现性能低劣的正则表达式?”——简而言之,有一个工具能在咱们编写代码的过程中去剖析正则表达式的性能并给出反馈! 工具积淀带着下面的想法我去调研了 vscode 插件和 eslint 插件: vscode 插件生态中有很多 regex 相干的插件,不过大都是集中在如何疾速预览和如何疾速提供罕用的正则表达式eslint 插件生态提供了 eslint-plugin-optimize-regex、eslint-plugin-vuln-regex-detector,前者次要是在对现有的正则表达式提供优化倡议,没有做回溯危险校验;后者只做了回溯危险校验,并且很久没有保护了vscode 插件这条路相比于 eslint 插件要更重一些,而且不好落进团队标准外面,因而决定自研一个 eslint 插件集优化倡议和回溯危险于一体。 在正式落代码之前须要弄清楚两个问题: 如何度量正则表达式复杂度?如何智能地给出优化倡议?这两个问题对于正则入门级选手的我来说切实是太难,通过一番调研之后发现早就有前辈在钻研这些问题并且给出了一套理论依据——star height,以及一个成熟的正则表达式解决工具——regexp-tree。果然站在伟人的肩膀上不仅看得又高又远,而且代码撸得也飞快~ 花了半天工夫就实现了 eslint-plugin-analyze-regex 插件的第一个版本,运行成果如下: ...

April 1, 2021 · 1 min · jiezi

关于正则表达式:正则表达式小记

看《自制编程语言》中对正则有一个简略的介绍,现记录一下。如下一个正则表达式([1-9][0-9]*)|0|([0-9]+\.[0-9]+)[与]示意匹配此范畴内的任意字符。反对应用连接符的缩写。比方[1-9]与[123456789]是齐全一样的。最后面的圆括号的[1-9]代表匹配1~9中的任意一个数字,其后的[0-9]代表匹配0~9中的任意一个数字。之后的*,代表匹配后面的字符*0次或者屡次。因而,[1-9][0-9]*这个正则表达式,整体代表以1~9结尾(只有一位),后接0个以上的0~9字符。|代表“或”的意思。即后面的数字与0通过|分成两局部而后并列+是指匹配后面的字符一次或屡次[0-9]+就是指0~()的数字至多呈现一次.就指的是小数点,而是用\.,是因为须要本义,\就是本义符[0-9]+\.[0-9]+整体意思就是:0~9的数字至多呈现一次,后接小数点。后又接至多一位0~9数字[、]、*、+、.等这些在正则表达式中有非凡含意的字符称为元字符,元字符能够像上文那样用\或双引号进行本义

March 24, 2021 · 1 min · jiezi

关于正则表达式:正则表达式基础工具书篇-关于边界

写在之前:以下所有的元字符,匹配的不是理论的字符,而是一个“虚”的地位。 1. 整体边界1. 匹配起始地位的 ^^ 写在字符集中第一个方括号的后边,示意“非”。^ 写在整个正则表达式的最前边,则示意匹配输出字符串的起始地位,即结尾。简略的说,就是以什么什么为结尾。 比方,咱们想要通过正则表达式匹验证手机号码。 如果咱们应用正则表达式 1[35789]\d{9}去匹配,会把 00015599998888这样的字符串验证通过。因为咱们的确能够在这个字符串中,匹配出合乎这个正则的字符串。 单纯的为了避免在结尾多几位数的谬误手机号通过验证,咱们应该将正则表达式批改为 ^1[35789]\d{9}。即只有以 13 15 17 18 19结尾的,且能在其后匹配出9个数字的字符串,能够验证通过。 2. 匹配完结地位的 $$ 写在整个正则表达式的最初边,则示意匹配输出字符串的完结地位,即开端。简略的说,就是以什么什么为结尾。 返回上边的例子,正则表达式,曾经被优化为 ^1[35789]\d{9}。 然而仔细的人会发现,1559999888866666这样的字符串还是会验证通过。为了保障手机号只有11为,咱们应该将正则表达式批改为 ^1[35789]\d{9}$。 即只有以 13 15 17 18 19结尾的,且后边只有9个数字就完结的,能够验证通过。 3. \b 与 \B\b用来匹配单词(数字)的边界,比方单词与符号之间、单词与空格之间的地位等。用谨严一点的说法,就是\w和\W之间的地位(尚未讲究)。 虽说是边界,然而匹配的只是一个虚的地位(能够设想为\w与\W两个字符两头的那个缝隙),而不是理论的字符。 \B则反过来,匹配非单词的边界,即\w和\w之间的地位,或\W和\W之间的地位。也就是单词(数字)中两个相邻字符两头的那条缝隙,或者两个符号两头的那条缝隙。 同样,匹配的是一个虚的地位。 利用这两个符号,咱们最常做的,就是利用 replace,在字符串中插入字符。举一个最经典的例子,数字的三位分节法: //js"1234567890".replace(/\B(?=(?:\d{3})+$)/g,",")//"1,234,567,890"(?=(?:\d{3})+$)是一个正向预查,示意 咱们要匹配的\B,的后边的数字必须是三个一组三个一组(有起码一组)来结尾的。满足这样条件的,数字之间的缝隙(非单词边界),全副(正则后有全局修饰符g)替换(插入)为一个逗号。

March 4, 2021 · 1 min · jiezi

关于正则表达式:正则表达式基础工具书篇-所有关于的

?在正则表达式界领有特地高的位置。因为跟 ?相干的符号太多了。除了之前讲的「示意匹配次数0或1次」以及「示意非贪心匹配」之外,还有其它的作用,咱们一起码一码。 1. ?:用来示意子表达式非捕捉。用圆括号包裹的表达式,即子表达式,其匹配到的内容,默认状况下,也会被保留到内存中,以供应用。 比方咱们想要在一段HTML中,拿到一个残缺的a标签,还想要拿到这个a标签里的链接地址。正则表达式能够写为 \<a href\="(.*?)"\>\<\/a\>。在进行匹配时,括号内的匹配后果也会一起返回进去。返回后果的应用形式依据语言不同、应用的函数不同而异,大家可自行查阅。 如果咱们在进行匹配时,不须要这个a标签里的链接地址。正则表达式能够写为 \<a href\="(?:.*?)"\>\<\/a\>。 将不须要的子表达式设置为非捕捉模式,能够节俭内存。 2. ?=用来示意正向肯定预查。即满足后者条件的前者。借用一下经典例子,正则表达式 Windows(?=95|98) 会匹配到 Windows95或 Windows98中的 Windows,而不会匹配到 Windows2000、WindowsXP等字符串中的Windows。要留神,它只会匹配出 Windows。 3. ?!用来示意正向否定预查。即不满足后者条件的前者。正则表达式 Windows(?!95|98) 会匹配到 Windows2000、WindowsXP等字符串中的Windows,而不会匹配到 Windows95或 Windows98中的 Windows。要留神,它只会匹配出 Windows。 4. ?<=用来示意反向肯定预查。即满足前者条件的后者。正则表达式 (?<=95|98)Windows 会匹配到 95Windows或 98Windows中的 Windows,而不会匹配到 2000Windows、XPWindows等字符串中的Windows。要留神,它只会匹配出 Windows。 5. ?<!用来示意反向否定预查。即满足前者条件的后者。正则表达式 (?<!95|98)Windows 会匹配到 2000Windows、XPWindows等字符串中的 Windows,而不会匹配到 95Windows或 98Windows中的Windows。要留神,它只会匹配出 Windows。

March 4, 2021 · 1 min · jiezi

关于正则表达式:正则表达式基础工具书篇-匹配次数

*. 分组说匹配次数之前,先说说其余的。应用圆括号 ( ) 包裹字符内容,使其变成一个子表达式,执行匹配后,除了总匹配后果,子表达式匹配后果也会存入内存。这里括号的作用和四则运算中括号中的作用差不多,括号内的运算具备更高的优先级,并作为一个整体参加匹配运算。 1.用元字符确定匹配次数通过在单个字符或一个子表达式的前方,紧跟示意匹配次数的元字符,确定这个字符或者子表达式该当间断匹配的次数。 1. ?? 示意匹配0次或者1次,即要匹配的内容可有可无。例如正则表达式 (www\.)?sss.com,既能够匹配字符串 www.sss.com,也能够匹配 sss.com。 2. ** 示意匹配0次或者屡次,即匹配多少次都行。例如正则表达式 ax*b,能够匹配字符串 ab、 axb、 axxxxb、 axxxxxxxxxxxb等。 3. ++ 示意匹配1次或者屡次,即匹配多少次都行,然而至多得有一次。例如正则表达式 ax+b,能够匹配字符串 axb、 axxxxb、 axxxxxxxxxb等,然而不能匹配 ab。 4. 花括号应用花括号包裹自然数,来示意匹配的次数({m})。能够在两个自然数两头加上逗号来示意匹配两个数的区间范畴({m, n})。如果花括号内只有第一个自然数和一个逗号,则示意匹配 >= 第一个数的次数({m,})。例如:ce{3}b 只能够匹配字符串 ceeeb,ce{1,3}b 只能够匹配字符串 ceb、 ceeb、 ceeeb,ce{3,}b 能够匹配字符串 ceeeb、 ceeeeeeeb、 ceeeeeeeeeeeeeeeb等,但不能匹配字符串ceb、 ceeb。 2.贪心模式与非贪心模式在一个正则表达式中,一个字符对应的字符集越大,则满足匹配的状况就越多。如果这个字符的匹配次数越大,那么字符串中满足匹配的状况就越多。这个时候,最终的匹配后果应该如何抉择呢? 比方,用正则表达式 a.*b 去匹配字符串 abccbxxb,匹配后果应该是 ab、 abccb 还是 abccbxxb? 这个时候,须要依据贪心模式或者非贪心模式去判断。 贪心模式(默认模式),就是说,在满足正则匹配的状况下,取字符数最多的那个后果。非贪心模式,即反之,取字符数起码的那个后果。应用办法为,在示意匹配次数的元字符后加上一个 ?。 依据下面的概念,之前的问题,答案应该是 abccbbxxb。如果想要应用非贪心模式来匹配出 ab,则应该批改正则表达式为 a.*?b。 咱们来看一个更贴近事实的例子。咱们要取出一段HTML中a标签所蕴含的链接。假如这段HTML为: <a href="a.com"></a><div class="one">如过咱们应用正则表达式 ".*" 去匹配,则后果为 "a.com"></a><div class="one"。因为贪心模式,匹配到了最长的字符串。因而,应该应用 ".*?"去匹配,后果为 "a.com"。这时,正确匹配到a标签中蕴含的链接(尽管有两个引号的)。

March 4, 2021 · 1 min · jiezi

关于正则表达式:正则表达式基础工具书篇-字符

1. 为啥要写正则表达式在任何开发语言中都用的到,连写个linux命令都能用的到,用来指定检索、替换的规定模式。尽管它十分万能,然而有个很大的毛病,那就是 对老年选手太不敌对了。想用好正则表达式,就得记住一堆合乎(符号组合)及其作用。对鄙人来说,常常忘了查,查了忘。“查”的过程又常常比拟繁琐,索性写点合乎本人需要的内容,省的当前又是一顿xjb查。。。 2. 要写啥这里不再写对于js如何应用正则的内容了,写多了容易乱。这里,只说“正则表达式”这个货色。 3. 根底工具内容 字符相干1. 一般字母与数字写啥匹配啥,怼就完了。 2. 符号大多数的符号都在正则中表白非凡的含意,因而想匹配符号,个别要加个本义符 \。如 \. 、\?等。 3. 字符集用方括号 [ ] 包裹其余字符,用来匹配其中所蕴含的任意一个字符。 肯定记住匹配进去的是一个字符。外面所蕴含的字符,都是“或”的关系。比方 [abcde]匹配的是 a 或 b 或 c 或 d 或 e。 -用来示意范畴,比方 [0-9]匹配的是一个 0 到 9 之间的数字。^写在方括号里的最后面,用来示意不属于方括号内容的其余字符,比方 [^a-z]匹配到的是除了 小写a 到 小写z 这26个字母之外的其余任意一个字符。 4. 带字母的元字符本义符加一个字母,用来匹配特定范畴的一个字符。 一个字符。常见罕用的: 符号 含意 等价\d 数字 [0-9]\D 非数字 [^0-9]\w 数字字母下划线 [a-zA-Z0-9_]\W 非数字字母下划线 [^a-zA-Z0-9_]\s 空白字符 空格 制表符等 [ \f\n\r\t\v](留神前边有个空格)\S 非空白字符 [^ \f\n\r\t\v]\b 单词边界(不匹配理论字符)\B 非单词边界(不匹配理论字符)不罕用的不写了 老老实实去查吧。记忆技巧 符号的 小写字母 与 大写字母 对应的字符是互补的关系。记住一个,另一个就晓得是啥意思了。 ...

March 4, 2021 · 1 min · jiezi

关于正则表达式:JS中的第二世界正则表达式

近期的忙碌让我始终没有闲暇静下心来好好写一些文章。好在,所有的繁忙都已过来,愿今天更美妙。刚过完七夕,带着欢畅的情绪写下这篇文章。心愿读者可能喜爱哟~~ 你是不是常常遇到正则,却不知它在说什么,你是不是就算再我的项目中看到了,也会抉择一眼略过,你是不是终日遗记搜寻什么,却不晓得有的编辑器搜寻反对正则的含糊搜寻…… 相熟的旋律萦绕在耳边,却早已不是当初的少年。 工作了很久之后,猛然发现之前本人疏忽的正则是这么重要。搜寻、查问、命令行、校验、截取、替换…………哪样哪样都离不开这个小东西。很多人不晓得的是,正则在 JavaScript 里好像一个第二世界一样。看起来简略,实则有很多让咱们摸不着头脑的操作。 接下来,让咱们顺着本文的介绍,一点儿一点儿深刻理解正则表达式,通晓正则的弱小能力! 1. 创立正则表达式在 JavaScript 中创立正则表达式有两种形式 第一种:构造函数创立 const reg = new Reg('正则表达式')第二种:字面量创立 const reg = /正则表达式/2. 应用正则表达式匹配内容正则匹配分为 精准匹配 和 含糊匹配 精准匹配 只须要咱们将须要匹配的内容放入到正则表达式中匹配即可。上手简略 const reg = /正则表达式/const str = '这是一篇写正则表达式是文章'str.match(reg) // 正则表达式这里的正则表达式会精准的搜寻到咱们要搜寻的内容。 含糊匹配 含糊匹配须要用到第三点所形容的内容,这里咱们先看下 const reg = /[\u4e00-\u9fa5]+/const str = '这是一篇写正则表达式Regpx的内容'str.match(reg) // 这是一篇写正则表达式这里的正则表达式会依据咱们传入的规定来匹配要搜寻的内容。留神:这里的\u4e00-\u9fa5示意的是中文范畴 \u4e00 示意的是字符集中第一个中文汉字 \u9fa5 示意的是字符集中最初一个中文汉字 ok,晓得了怎么创立和应用正则,接下来咱们来真正理解一下他吧。 3. 正则表达式介绍精通元字符的同学可跳过此大节,直奔第四大节查看。次要内容有 . | \ * + ? () [] {} ^ $ 几种字符应用办法,含意和注意事项,内置匹配项,贪心和惰性匹配。 首先介绍一下前瞻条件,正则能够依据本人的设置来进行多行和全局,部分,疏忽大小写等匹配模式,分为: m :多行匹配g: 全局匹配i: 疏忽大小写接下来的内容,就能够看到咱们来应用它 ...

February 24, 2021 · 4 min · jiezi

关于正则表达式:关于GaussDBDWS的正则表达式知多少人人都能看得懂的详解来了

摘要:GaussDB(DWS)除了反对规范的POSIX正则表达式句法,还领有一些非凡句法和选项,这些你可理解?本文便为你解说这些非凡句法和选项。概述正则表达式(Regular Expression,简称RE),通常被用来检索、替换那些合乎某个模式(规定)的文本。正则表达式应用比拟灵便,功能强大,因而常常被用到进行文本的搜寻和替换中,帮忙开发人员疾速进行批量文本查问和解决。比方罕用的linux的grep命令,许多程序设计语言比方Perl、Tcl也都反对正则表达式进行字符串操作。 GaussDB(DWS)反对的正则表达式POSIX 1003.2中定义的正则表达式RE有两种模式:扩大RE或ERE(大抵为egrep的RE),和根本RE或BRE(大抵为ed的RE),GaussDB(DWS)都反对这两种模式,并实现了在编程语言(如Perl和Tcl)中宽泛应用而POSIX规范中未蕴含的一些扩大。应用这些非POSIX扩大的RE在本文中称为高级RE或ARE。ARE简直是ERE的超集,然而BRE有几种符号不相容性(而且是无限的)。 GaussDB(DWS)的正则表达式的次要句法和在其余程序语言中反对的句法性能雷同,此文不再赘述。本文中对GaussDB(DWS)领有的非凡模式和句法进行阐明。 GuassDB(DWS)反对的正则表达式函数GaussDB(DWS)提供了反对POSIX正则表达式的函数,如表1所示。 表1 GaussDB(DWS)中的正则表达式函数 从表1中看到,GuassDB(DWS)反对的正则表达式函数都有一个可选的flags参数,该参数的可选项及其含意是什么呢?上面将开展进行具体举例说明。 GaussDB(DWS)正则表达式函数的flags参数详解表2中列举了表1中flags参数的所有可选项。 表2 GaussDB(DWS)正则表达式函数的flags参数的选项阐明 g选项表2中给出的flags参数选项形容,十分简洁,了解起来比拟艰难。上面通过一些示例,来直观帮忙了解下面这些flags参数选项的含意。 示例1-1:未指定’g‘选项,仅对第一个匹配项进行替换 示例1-2:指定’g‘选项,对所有匹配项进行替换 c 和 i 选项示例2-1:默认状况下,进行大小写敏感匹配 示例2-2:显示指定进行大小写敏感匹配 示例2-3:显示指定进行大小写不敏感匹配 n[或m]、s、p、w选项对元字符点(.)的影响示例3-1:指定选项n时,元字符点(.)不匹配换行符 示例3-2:指定选项s时,元字符点(.)匹配换行符 示例3-3:指定选项p时,元字符点(.)不匹配换行符 示例3-4:指定选项w时,元字符点(.)匹配换行符 n[或m]、s、p、w选项对元字符^、$的影响示例5-1:指定选项n时,元字符点^、$匹配行首和行尾 示例5-2:指定选项s时,元字符点^、$不匹配行首和行尾 示例5-3:指定选项p时,元字符点^、$不匹配行首和行尾 示例5-4:指定选项w时,元字符点^、$匹配第一个行首匹配的行到最初一个行尾匹配的行 n[或m]、s、p、w选项对元字符 [^ 的影响示例6-1:指定选项n时,换行符不匹配被[^排除的字符,所有行尾的换行符未被替换为M 示例6-2:指定选项s时,换行符匹配被[^排除的字符,所有行尾的换行符被替换为M 示例6-3:指定选项p时,换行符不匹配被[^排除的字符,所有行尾的换行符被替换为M 示例6-4:指定选项w时,换行符匹配被[^排除的字符,所有行尾的换行符被替换为M t 和 x 选项通常状况下,RE语法都是严格的,即RE中的所有字符都是重要的。严格语法是默认的,也能够通过指定选项t示意。 示例7-1:在严格语法中,空白字符也是重要的 GaussDB(DWS)还有一个扩大语法,通过指定x选项示意。在扩大语法中,RE中的空白字符(在这里,空白是空格、程度制表符、新行、和任何属于 space 字符类的字符。)将被疏忽,以及#和换行符(或RE的结尾)之间的所有字符也将被疏忽。这种语法容许对简单的RE进行分段落和正文。 示例7-2:在扩大语法中,RE中的空格被疏忽 该规定有三个例外: · 转义字符后的空白或#被保留 示例7-3 ...

February 23, 2021 · 1 min · jiezi

关于正则表达式:正则学习

正则学习类字符类[ ]合乎某些特色的一个对象/[ABC]/ 示意匹配ABC 中的一个即可 反向类[^]在中括号中加^例:[ ^A ] 就是匹配不是A的字符 范畴类[A-Z]能够匹配A-Z内的任意一个字符 预约义类预约义字符:\d 示意数字 边界字符\b 示意边界^在[]外示意匹配结尾的意思$示意匹配结尾的意思 量词{n} 匹配字符串长度为n{m,n} 匹配字符串长度最小为m,最大为n{m,} 匹配字符串长度最小为m,最大为无穷{0,n} 匹配字符串长度最小为空,最大为n+ 呈现次数>=1* 现次数>=0? 呈现次数 0或者1. 能够匹配任意字符,除了空白字符中的换行符\n 贪心模式12345678.replace(/\d{3,6}/,‘x’) 输入X78非贪心模式只须要在量词前面增加一个问号 12345678.replace(/\d{3,6}?/,‘x’) 输入XX78 尝试起码可能的匹配分组应用()能够使量词最用与分组而非紧挨着它的单词‘a1b2c3d4’.replace(/([a-z]\d){3}/g),‘x')输入xd4 或a|b 反向援用$援用(捕捉) 2019-12-05 替换成12/05/2019 '2019-12-05'.replace('/(/d{4}-(\d{2})-(/d{2}))/g','$2/$3/$1') $是以分组捕捉 不想捕捉分组的时候只须要在分组内加上?:(?:gray).(ok) 这里$1是ok 前瞻和后顾待学习 本来含意的字符待学习 元字符(代表非凡含意的字符)待学习 XMind - Trial Version

February 22, 2021 · 1 min · jiezi

关于正则表达式:正则表达式匹配代码块的注释

应用正则外部的逻辑短路匹配之一举多得用多分支来排除,向if-else那样不必写出齐全的条件。小而广的条件有时不仅能匹配到最终目标,而且还能精益求精(一举多得): regexp = /str|regexp|lineannotaion|blockannotation|tampstring/g let tmp='', str = ` ${tmp+'\`'+"${}"+ `${tmp}`+ /*A*/ (tmp={'a':/(?<!x`)/g}["a"]) //B}'c' \" <d> & // e /*f*/`, // greg = /(?<!\\)\/(?![^\/\*])[\s\S]+?(?<!\\)\//g;//*/ h str; reg = /c/g, str = ``/*/ j k //KK//*/str = "\"http://'xxxx'\/\"";str = `.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\u00a0/g, ' ')${`l`+str}`str = '\ \' //n"`\' /* // */匹配任意字符 /[\s\S]/g/[^]/g匹配单行正文 /\/\/.*/g匹配多行正文 /\/\*[^]*?\*\//g匹配字符串 /('|"|`)[^]*?(?<!\\)\1/g/''|``|""|('|"|`)[^]*?[^\\]\1/g/''|""|('|")[^]*?[^\\]\1|`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/g字符串模板${}外部可能还会呈现字符串模板和正则表达式内存在未本义的\`书写简略的字符串模板时应用第二个正则表达式应该是没大问题的 匹配正则表达式 /\/.*?[^\\]\//g替换须要本义的字符 .replace(/&|<|\u00a0/g,m=> m =='&' ? "&amp;" : m=='<' ? "&lt" : /\u00a0/.test(m) ? ' ' : m)根本实现CODE_JAVASCRIPT.replace(/&|<|\u00a0/g,m=> // 匹配须要本义的HTML符号 m =='&' ? "&amp;" : m=='<' ? "&lt" : /\u00a0/.test(m) ? ' ' : m).replace( // /\/\/.*|\/\*[^]*?\*\/|''|``|""|('|"|`)[^]*?[^\\]\1|\/.*?[^\\]\//g, // ${}外部不能再嵌套模板字符串,外部应用正则时要本义`,像这样 ${"helo".match(/\`/)[0]} /\/\/.*|\/\*[^]*?\*\/|\/.*?[^\\]\/|''|""|('|")[^]*?[^\\]\1|`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/g, (m,a,b,c,d,e,f,g)=>{ // return /\/\*|\/\//.test(m.slice(0, 2)) return m.slice(0,2) == "//" || m.slice(0,2) == "/*" // ? (!b || /\r|\n/.test(c[b-1]) ? "<span class=\"annotation\">"+m+"</span>" : "<span class=\"annotation-sub\">"+m+"</span>") ? "<span class=\"annotation\">"+m+"</span>" : m})测试版 ...

February 9, 2021 · 2 min · jiezi

关于正则表达式:正则表达式速查

正则表达式速查正则表达式默认为“贪心”,最大匹配; 在量词后加?可改为“非贪心” 罕用代码匹配要求代码任意汉字[u4e00-u9fa5]Enter回车符rn\r \n \r\n 理论利用中的区别 存疑 量词量词位于字符前面,在搜寻时限度字符的数量 代码含意{m}m个{m,n}m到n个*0到任意个+1到任意个?0到1个字符代码助记含意例句....示意省略号任意字符(不包含换行符)[A-Z]-[ ... ]示意区间中的任意字符ddigit数字从0到9的数字s Ssymbol符号s任意空白字符,S任意非空字符w Wword单词w代表word,匹配字母、数字或下划线字符线,W是w的反集( ) 示意子表达式nnewline另一行换行符rreturn回车回车符^-字符开始,[ ]中的^示意逻辑非“¬”$-字符完结\ -逻辑或分组(abc)? 示意0个或1个abc 这里一 个括号的表达式就示意一个分组 。捕捉组1.分组的编号从左到右计算其开括号来编号例:表达式: (A)(B(C)) 编号分组0(A)(B(C))1(A)2(B(C))3(C)2.Back援用反向援用,援用的是后面捕捉组中的文本而不是正则,也就是说反向援用处匹配的文本应和后面捕捉组中的文本雷同例:字符串:帅哥123456帅锅---帅哥123456帅哥表达式①:;后果:表达式②:;后果: 3.分组列举非捕捉组以 (?) 结尾,不捕捉文本,不存在backref反相援用代码含意例句(?:Pattern)匹配Pattern字符字符串:indestry哈哈哈哈indestries 正则:indestr(y\ies)或者indestr(?:y\ies) 后果:indestry或者indestries(?<=X)X ,通过零宽度的正 lookbehind字符串:name:wangfei 正则:(?<=name:)(wangfei) 后果:wangfei(?=X)X ,通过零宽度的正 lookahead字符串:product_path 正则:(product)(?=_path) 后果:product(?<!X)X ,通过零宽度的负 lookbehind字符串:name:angelica 正则:(?<!nick_name:)(angelica) 后果:angelica; 字符串:name:angelica 正则:(?<!name:)(angelica) 后果:空(?!X)X ,通过零宽度的负 lookahead字符串:product_path 正则:(product)(?!_url) 后果:product;字符串:product_path 正则:(product)(?!_path) 后果:空

January 22, 2021 · 1 min · jiezi

关于正则表达式:前端正则练习题

练习题1.把get-element-by-id转为驼峰命名 var str = 'get-element-by-id' const reg = /-\w/g const newStr = str.replace(reg, word => { console.log(word, 'word12') return word.substring(1).toUpperCase() }) console.log(newStr, 'newStr') // getElementById2.判断电话号码 function isPhone(tel) { var regx = /^1[34578]\d{9}$/; return regx.test(tel); }3.查找反复单词var str = "Is is the cost of of gasoline going up up";var patt1 = /\b([a-z]+) \1\b/ig;document.write(str.match(patt1));\1 指定第一个子匹配项 back reference 反向参考~~~~4.abcdebbcde匹配叠词(考查反向援用)https://www.cnblogs.com/guorange/p/6693168.html源字符串:abcdebbcde正则表达式:([ab])1对于正则表达式“([ab])1”,捕捉组中的子表达式“[ab]”尽管能够匹配“a”或者“b”,然而捕捉组一旦匹配胜利,反向援用的内容也就确定了。如果捕捉组匹配到“a”,那么反向援用也就只能匹配“a”,同理,如果捕捉组匹配到的是“b”,那么反向援用也就只能匹配“b”。因为前面反向援用“1”的限制,要求必须是两个雷同的字符,在这里也就是“aa”或者“bb”能力匹配成功。~~~~5.给定字符串str,查看其是否合乎如下格局XXX-XXX-XXXX 其中X为Number类型 function matchesPattern(str) { return /^(\d{3}-){2}\d{4}$/.test(str);6、JS实现千位分隔符前端没有后顾,所以只解说前瞻 首先咱们要了解正则的解析程序 正则解析程序->从左向右,向左边看就是前瞻 ?= 正向前瞻 例如: /b(?=a)/.test('bab') 看前瞻的局部是否是a   //true?! 负向前瞻 /b(?!a)/.test('bb') 看前瞻局部是不是非a //true const number = 123456789123 var regx = /\d{1,3}(?=(\d{3})+$)/g // document.write((number + '').replace(regx, '$&,')) // $&示意与regx相匹配的字符串123 456 789 最初的123 // 没有被匹配上是因为?= 前瞻的时候没有3位数~~~~字 document.write( (number + '').replace(regx, function (world) { //这里的world就是下面的$& 即 123 456 789 return world + ',' }), ) ~~~~

January 22, 2021 · 1 min · jiezi

关于正则表达式:记录一下项目中遇到的正则表达式

要求:必须有一个字母和数字,如果有_则_后必须有数字.除_外不能够有特殊字符. 例子: aa / AA / Aa /Aa_ / A1_a / A_1 / A1_1A 都不能过a1 / a1_1 / A1 / A1_11 能够过 最终正则表达式: ^([A-Za-z]+[0-9]+)(_[0-9]+)?$合成了解 :^...$ : 开始和结尾,固定写法第一局部 : ([A-Za-z]+[0-9]+) 大写字母或者小写字母 +代表至多一个以上.起码一个.数字0-9, +代表至多一个数字,上不限第二局部 : (_[0-9]+)? 以 _开始,数字结尾.数字一个以上,上不限. ?的意思是可有可无. 有_就必须有数字. 是用小括号包起来的.一个整体.

December 30, 2020 · 1 min · jiezi

关于正则表达式:常用正则表达式库

1.火车车次 /^[GCDZTSPKXLY1-9]\d{1,4}$/2.带端口号的网址 /^((ht|f)tps?:\/\/)?[\w-]+(\.[\w-]+)+:\d{1,5}\/?$/(1)ip-v4[:端口] /^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]).){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/(2)ip-v6[:端口] ~~~~/^(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))|\[(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))\](?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/i (3)mac地址 /^((([a-f0-9]{2}:){5})|(([a-f0-9]{2}-){5}))[a-f0-9]{2}$/i3.子网掩码 /^(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/4.网址(url,反对端口和"?+参数"和"#+参数) /^(((ht|f)tps?):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?$/5.对立社会信用代码/^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/6.对立社会信用代码宽松匹配(15位/18位/20位数字/字母) /^(([0-9A-Za-z]{15})|([0-9A-Za-z]{18})|([0-9A-Za-z]{20}))$/7.银行卡号(10到30位, 笼罩对公/私账户 /^[1-9]\d{9,29}$/8.手机号(mobile phone)中国(谨严), 依据工信部2019年最新颁布的手机号段 /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-7|9])|(?:5[0-3|5-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[1|8|9]))\d{8}$/9.手机号(mobile phone)中国(宽松), 只有是13,14,15,16,17,18,19结尾即可 /^(?:(?:\+|00)86)?1[3-9]\d{9}$/10.手机号(mobile phone)中国(最宽松), 只有是1结尾即可, 如果你的手机号是用来接管短信, 优先倡议抉择这一条 /^(?:(?:\+|00)86)?1\d{10}$/11.date(日期) /^\d{4}(-)(1[0-2]|0?\d)\1([0-2]\d|\d|30|31)$/12.Email邮箱 /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/13.身份证号(2代,18位数字),最初一位是校验位,可能为数字或字符X /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/14.帐号是否非法(字母结尾,容许5-16字节,容许字母数字下划线组合 /^[a-zA-Z]\w{4,15}$/15.QQ号格局正确 /^[1-9][0-9]{4,10}$/16.明码强度校验,起码6位,包含至多1个大写字母,1个小写字母,1个数字,1个特殊字符 /^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/记录下来,不便本人,不便别人

December 30, 2020 · 1 min · jiezi

关于正则表达式:正则表达式

根底定义:`\d`:匹配数字`\w`:匹配数字或字母`.`:匹配任意字符`\s`:匹配空格`*`:任意个字符`+`:多个`?`:0/1个`{n}`:n个`{n,m}`:n-m个`[]`:标适范畴`A|B`:能够匹配A或B`^`示意行的结尾`$`示意行的完结特殊字符须要用`'\'`转译.例:'-'=>`\-`例子:1. 例:![](https://www.runoob.com/wp-content/uploads/2014/03/CEBB49BB-B1AD-4539-AC7A-B40DDC62D1B2.jpg) * ^ 为匹配输出字符串的开始地位。 * [0-9]+匹配多个数字, [0-9] 匹配单个数字,+ 匹配一个或者多个。 * abc$匹配字母 abc 并以 abc 结尾,$为匹配输出字符串的完结地位。2. 例:咱们在写用户注册表单时,只容许用户名蕴含字符、数字、下划线和连贯字符(-),并设置用户名的长度,咱们就能够应用以下正则表达式来设定。![](https://www.runoob.com/wp-content/uploads/2018/09/regexp-cn.png)在JavaScript中应用正则:RegExp:是正则表达式(regular expression)的简写。语法: var patt = new RegExp(pattern,modifiers)或者var patt = /pattern/modifiers例:var re = new RegExp("w+"); 等价于var re = /w+/;i - 修饰符是用来执行不辨别大小写的匹配。g - 修饰符是用于执行全文的搜寻(而不是在找到第一个就进行查找,而是找到所有的匹配)。 test():查问指定字符返回true/false例:re.test('sting')exec():查问指定字符返回被找到的值/null例:re.exec('sting')在python当中应用正则re模块转译:s = 'ABC\\001'等价于s = r'ABC\001'=>'ABC-001'match()办法判断是否匹配,返回一个Match对象/Noneimport rere.match(r'^d{3}-d{3,8}$', '010-12345')//<_sre.SRE_Match object; span=(0, 9), match='010-12345'>re.match(r'^d{3}-d{3,8}$', '010 12345')//none切割字符串 'a b c'.split(' ')// ['a', 'b', '', '', 'c']// 无奈解决空格re.split(r'[s,;]+', 'a,b;; c d')// ['a', 'b', 'c', 'd']// 主动解决分组用()示意的就是要提取的分组(Group) ...

December 22, 2020 · 1 min · jiezi

关于正则表达式:手把手教你写正则表达式

1.什么是正则表达式正则表达式是一种被用于从文本中检索合乎某些特定模式的文本。 正则表达式是从左到右来匹配一个字符串的。英文Regular Expression,咱们通常应用它的缩写 "regex" 或者 "regexp"。 正则表达式能够被用来替换字符串中的文本、验证表单、基于模式匹配从一个字符串中提取字符串等等。 2.为什么要学习正则表达式正则表达式在咱们开发过程中很罕用,然而很多人并不会写正则表达式,每到要用正则表达式的时候怎么办呢?万能解决办法百度。真是一个好方法。万一百度没有本人想要的答案怎么办呢?那只能本人边学边写。这篇文章将能够帮忙你边学边写正则表达式----文尾附罕用正则表达式。 3.元字符元字符是正则表达式的根本组成元素。元字符在这里跟它通常表白的意思不一样,而是以某种非凡的含意去解释。有些元字符写在方括号内的时候有非凡含意。 元字符如下: 元字符形容.匹配除换行符以外的任意字符[]字符类,匹配方括号中蕴含的任意字符。[^]否定字符类。匹配方括号中不蕴含的任意字符。*匹配后面的子表达式零次或屡次+匹配后面子表达式一次或屡次?匹配后面的子表达式零次或一次。{n,m}花括号,匹配后面字符至多n次,然而不超过m次(x,y,z)依照确切的程序匹配字符xyz\ 分支构造,匹配分支构造其中一个字符\本义符,它能够还原元字符原来的含意,容许你匹配保留字符 `[ ] ( ) { } . * + ? ^ $ \^匹配行的开始$匹配行的完结3.0.举例和测试方法例如正则表达式[H|g]ello能够匹配字符串Hello或hello。那么咱们写完正则表达式后该怎么测试呢? 咱们能够应用在线的正则表达式测试平台进行测试;例如菜鸟在线测试 咱们也能够应用对应的编程语言进行测试。 JavaScript // 须要匹配的字符var str = 'Hello'// replace 里参数是正则表达式var s = str.replace('[H|h]ello');console.log(s)Java public static void main(String[] args) { // 要验证的字符串 String str = "hello"; // 验证规定 String regEx = "[H|h]ello"; // 编译正则表达式 Pattern pattern = Pattern.compile(regEx); // 疏忽大小写的写法 // Pattern pat = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(str); // 字符串是否与正则表达式相匹配 boolean rs = matcher.matches(); System.out.println(rs); }Golang ...

December 16, 2020 · 1 min · jiezi

关于正则表达式:夏哥事件簿-正则表达式

//非零的正整数 var num1 = /^+?[1-9][0-9]*$/;//正整数 + 0 var num2 = /^d+$/;//负数 var num3 = /^d+(?=.{0,1}d+$|$)/; //金额格局 var moneyReg = /(^[1-9]([0-9]+)?(.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9].[0-9]([0-9])?$)/; 继续更新ing

December 3, 2020 · 1 min · jiezi

关于正则表达式:ES9ES2018中的正则表达式

ES9中正则表达式相干次要有两个提案:正则表达式命名捕捉组 & 正则表达式dotAll模式,目前都已进入stage4阶段。 正则表达式命名捕捉组ECMAScript提案“正则表达式命名捕捉组”proposal-regexp-named-group 由 Gorkem Yakin, Daniel Ehrenberg负责。 1. 什么是捕捉组捕捉组就是把正则表达式中子表达式匹配的内容,保留到内存中以数字编号或显示命名的组里,不便前面援用,且这种援用既能够在正则表达式外部,也能够在正则表达式内部。 捕捉组有两种模式,一种是一般捕捉组,另一种是命名捕捉组。 目前JavaScript只反对数字模式的一般捕捉组,而这个提案就是为了给JavaScript减少命名捕捉组。 2.捕捉组编号规定编号规定指的是以数字为捕捉组进行编号的规定, 编号0的捕捉组代表正则表达式整体。 const regex = /(\d{4})-(\d{2})-(\d{2})/;const matchers = regex.exec('2020-12-02');console.table(matchers) 3.命名捕捉组应用数字捕捉组的一个毛病是对于援用不太直观。比方下面的例子,咱们绝对比拟难分分明哪个组代表年,哪个组代表月或者日。而且,当咱们交互了年和月的值时,应用捕捉组援用的代码都须要更改。 而命名捕捉组就是为了解决这个问题。 命名捕捉组能够应用(?<name>...)语法给每个组起个名称。因而,用来匹配日期的正则表达式能够写为: /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/每个捕捉组的名字必须惟一,否则会抛出异样:另外,捕捉组的名字必须合乎JavaScript命名标准: 命名捕捉组能够通过匹配后果的groups 属性拜访。 let regx = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;let result = regx.exec('2020-12-02');result.groups.year === '2020';result.groups.month === '12';result.groups.day === '02';result[0] === '2020-12-02';result[1] === '2020';result[2] === '12';result[3] === '02';应用解构赋值的例子: let regx = /^(?<one>.*):(?<two>.*)$/;let {groups: {one, two}} = regx.exec('foo:bar');console.log(`one: ${one}, two: ${two}`);4.反向援用当须要在正则表达式外面援用命名捕捉组时,应用\k<name>语法。 let duplicate = /^(?<half>.*).\k<half>$/;duplicate.test('a*b'); // falseduplicate.test('a*a'); // true如果援用一个不存在的命名捕捉组,会抛出异样:命名捕捉组也能够和一般数字捕捉组一起应用: ...

December 2, 2020 · 1 min · jiezi

关于正则表达式:密码的正则表达式必须包含至少八个字符至少一个数字以及大小写字母和特殊字符

正则在线测试地址至多八个字符,至多一个字母和一个数字: "^(?=.*[A-Za-z])(?=.*d)[A-Za-zd]{8,}$" 至多八个字符,至多一个字母,一个数字和一个特殊字符: "^(?=.*[A-Za-z])(?=.*d)(?=.*[@$!%*#?&])[A-Za-zd@$!%*#?&]{8,}$" 至多八个字符,至多一个大写字母,一个小写字母和一个数字: "^(?=.*[a-z])(?=.*[A-Z])(?=.*d)[a-zA-Zd]{8,}$" 至多八个字符,至多一个大写字母,一个小写字母,一个数字和一个特殊字符: "^(?=.*[a-z])(?=.*[A-Z])(?=.*d)(?=.*[@$!%*?&])[A-Za-zd@$!%*?&]{8,}$" 起码8个字符,最多10个字符,至多一个大写字母,一个小写字母,一个数字和一个特殊字符: "^(?=.*[a-z])(?=.*[A-Z])(?=.*d)(?=.*[@$!%*?&])[A-Za-zd@$!%*?&]{8,10}$"

December 2, 2020 · 1 min · jiezi

关于正则表达式:我在乐字节学习前端的第五天正则表达式详细笔记及总结

1. 正则表达式规定1.1 一般字符字母、数字、汉字、下划线、以及后边章节中没有非凡定义的标点符号,都是"一般字符"。表达式中的一般字符,在匹配一个字符串的时候,匹配与之雷同的一个字符。 举例1:表达式 "c",在匹配字符串 "abcde" 时,匹配后果是:胜利;匹配到的内容是:"c";匹配到的地位是:开始于2,完结于3。(注:下标从0开始还是从1开始,因以后编程语言的不同而可能不同) 举例2:表达式 "bcd",在匹配字符串 "abcde" 时匹配后果是:胜利;匹配到的内容是:"bcd";匹配到的地位是:开始于1,完结于4。 1.2 简略的转义字符一些不便书写的字符,采纳在后面加 "/" 的办法。这些字符其实咱们都曾经熟知了。 表达式 可匹配 /r, /n 代表回车和换行符 /t 制表符 // 代表 "/" 自身 还有其余一些在后边章节中有非凡用途的标点符号,在后面加 "/" 后,就代表该符号自身。比方:^, $ 都有非凡意义,如果要想匹配字符串中 "^" 和 "$" 字符,则表达式就须要写成 "/^" 和 "/$"。 表达式 可匹配 /^ 匹配 ^ 符号自身 /$ 匹配 $ 符号自身 /. 匹配小数点(.)自身 这些转义字符的匹配办法与 "一般字符" 是相似的。也是匹配与之雷同的一个字符。 举例1:表达式 "/$d",在匹配字符串 "abc$de" 时,匹配后果是:胜利;匹配到的内容是:"$d";匹配到的地位是:开始于3,完结于5。 1.3 可能与 '多种字符' 匹配的表达式正则表达式中的一些示意办法,能够匹配 '多种字符' 其中的任意一个字符。比方,表达式 "/d" 能够匹配任意一个数字。尽管能够匹配其中任意字符,然而只能是一个,不是多个。这就好比玩扑克牌时候,大小王能够代替任意一张牌,然而只能代替一张牌。 表达式 ...

November 18, 2020 · 7 min · jiezi

关于正则表达式:查找代码中所有中文字符的正则表达式

所有中文^((?!(\*|//)).)+[\u4e00-\u9fa5] 排除正文(".[\u4E00-\u9FA5]+)|([\u4E00-\u9FA5]+.")

November 6, 2020 · 1 min · jiezi

关于正则表达式:好文推荐简单易懂的正则表达式

链接:https://www.sitepoint.com/learn-regex/

October 10, 2020 · 1 min · jiezi

关于正则表达式:最实用的正则表达式整理

作者:慕课网链接:https://zhuanlan.zhihu.com/p/...起源:知乎著作权归作者所有。商业转载请分割作者取得受权,非商业转载请注明出处。 一、校验数字的表达式1 数字: ^[0-9]$ 2 n位的数字: ^d{n}$ 3 至多n位的数字: ^d{n,}$ 4 m-n位的数字:^d{m,n}$ 5 零和非零结尾的数字:^(0|[1-9][0-9]*)$ 6 非零结尾的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 带1-2位小数的负数或正数:^(-)?d+(.d{1,2})?$ 8 负数、正数、和小数:^(-|+)?d+(.d+)?$ 9 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$10 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$11 非零的正整数:^[1-9]d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^+?[1-9][0-9]*$12 非零的负整数:^-[1-9][]0-9"*$ 或 ^-[1-9]d*$13 非负整数:^d+$ 或 ^[1-9]d*|0$14 非正整数:^-[1-9]d*|0$ 或 ^((-d+)|(0+))$15 非负浮点数:^d+(.d+)?$ 或 ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$16 非正浮点数:^((-d+(.d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$17 正浮点数:^[1-9]d*.d*|0.d*[1-9]d*$ 或 ^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$18 负浮点数:^-([1-9]d*.d*|0.d*[1-9]d*)$ 或 ^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$19 浮点数:^(-?d+)(.d+)?$ 或 ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$二、校验字符的表达式1 汉字:^[u4e00-u9fa5]{0,}$ 2 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$ 3 长度为3-20的所有字符:^.{3,20}$ 4 由26个英文字母组成的字符串:^[A-Za-z]+$ 5 由26个大写英文字母组成的字符串:^[A-Z]+$ 6 由26个小写英文字母组成的字符串:^[a-z]+$ 7 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$ 8 由数字、26个英文字母或者下划线组成的字符串:^w+$ 或 ^w{3,20}$ 9 中文、英文、数字包含下划线:^[u4E00-u9FA5A-Za-z0-9_]+$10 中文、英文、数字但不包含下划线等符号:^[u4E00-u9FA5A-Za-z0-9]+$ 或 ^[u4E00-u9FA5A-Za-z0-9]{2,20}$11 能够输出含有^%&',;=?$"等字符:[^%&',;=?$x22]+12 禁止输出含有~的字符:[^~x22]+三、非凡需要表达式1 Email地址:^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$ 2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.? 3 InternetURL:[a-zA-z]+://[^s]* 或 ^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$ 4 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])d{8}$ 5 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^((d{3,4}-)|d{3.4}-)?d{7,8}$ 6 国内电话号码(0511-4405222、021-87888822):d{3}-d{8}|d{4}-d{7} 7 身份证号(15位、18位数字):^d{15}|d{18}$ 8 短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$ 9 帐号是否非法(字母结尾,容许5-16字节,容许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$10 明码(以字母结尾,长度在6~18之间,只能蕴含字母、数字和下划线):^[a-zA-Z]w{5,17}$11 强明码(必须蕴含大小写字母和数字的组合,不能应用特殊字符,长度在8-10之间):^(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ 12 日期格局:^d{4}-d{1,2}-d{1,2}13 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$14 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$16 1.有四种钱的示意模式咱们能够承受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$17 2.这示意任意一个不以0结尾的数字,然而,这也意味着一个字符"0"不通过,所以咱们采纳上面的模式:^(0|[1-9][0-9]*)$18 3.一个0或者一个不以0结尾的数字.咱们还能够容许结尾有一个负号:^(0|-?[1-9][0-9]*)$19 4.这示意一个0或者一个可能为负的结尾不为0的数字.让用户以0结尾好了.把负号的也去掉,因为钱总不能是负的吧.上面咱们要加的是阐明可能的小数局部:^[0-9]+(.[0-9]+)?$20 5.必须阐明的是,小数点前面至多应该有1位数,所以"10."是不通过的,然而 "10" 和 "10.2" 是通过的:^[0-9]+(.[0-9]{2})?$21 6.这样咱们规定小数点前面必须有两位,如果你认为太刻薄了,能够这样:^[0-9]+(.[0-9]{1,2})?$22 7.这样就容许用户只写一位小数.上面咱们该思考数字中的逗号了,咱们能够这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$23 8.1到3个数字,前面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$24 备注:这就是最终后果了,别忘了"+"能够用"*"代替如果你感觉空字符串也能够承受的话(奇怪,为什么?)最初,别忘了在用函数时去掉去掉那个反斜杠,个别的谬误都在这里25 xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+.[x|X][m|M][l|L]$26 中文字符的正则表达式:[u4e00-u9fa5]27 双字节字符:[^x00-xff] (包含汉字在内,能够用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))28 空白行的正则表达式:ns*r (能够用来删除空白行)29 HTML标记的正则表达式:<(S*?)[^>]*>.*?</1>|<.*? /> (网上流传的版本太蹩脚,下面这个也仅仅能局部,对于简单的嵌套标记仍旧无能为力)30 首尾空白字符的正则表达式:^s*|s*$或(^s*)|(s*$) (能够用来删除行首行尾的空白字符(包含空格、制表符、换页符等等),十分有用的表达式)31 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)32 中国邮政编码:[1-9]d{5}(?!d) (中国邮政编码为6位数字)33 IP地址:d+.d+.d+.d+ (提取IP地址时有用)34 IP地址:((?:(?:25[0-5]|2[0-4]d|[01]?d?d).){3}(?:25[0-5]|2[0-4]d|[01]?d?d)) "^d+$" //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$" //正整数 "^((-d+)|(0+))$" //非正整数(负整数 + 0) "^-[0-9]*[1-9][0-9]*$" //负整数 "^-?d+$" //整数 "^d+(.d+)?$" //非负浮点数(正浮点数 + 0) "^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数"^((-d+(.d+)?)|(0+(.0+)?))$" //非正浮点数(负浮点数 + 0) "^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数 "^(-?d+)(.d+)?$" //浮点数 "^[A-Za-z]+$" //由26个英文字母组成的字符串 "^[A-Z]+$" //由26个英文字母的大写组成的字符串 "^[a-z]+$" //由26个英文字母的小写组成的字符串 "^[A-Za-z0-9]+$" //由数字和26个英文字母组成的字符串 "^w+$" //由数字、26个英文字母或者下划线组成的字符串 "^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$" //email地址 "^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$" //url整数或者小数:^[0-9]+.{0,1}[0-9]{0,2}$ 只能输出数字:"^[0-9]*$"。 只能输出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]*$"。 只能输出非零的负整数:"^-[1-9][]0-9"*$。 只能输出长度为3的字符:"^.{3}$"。 只能输出由26个英文字母组成的字符串:"^[A-Za-z]+$"。 只能输出由26个大写英文字母组成的字符串:"^[A-Z]+$"。 只能输出由26个小写英文字母组成的字符串:"^[a-z]+$"。 只能输出由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。 只能输出由数字、26个英文字母或者下划线组成的字符串:"^w+$"。 验证用户明码:"^[a-zA-Z]w{5,17}$"正确格局为:以字母结尾,长度在6~18之间,只能蕴含字符、数字和下划线。 验证是否含有^%&'',;=?$"等字符:"[^%&'',;=?$x22]+"。 只能输出汉字:"^[u4e00-u9fa5]{0,}$" 验证Email地址:"^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$"。 验证InternetURL:"^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$"。 验证电话号码:"^((d{3,4}-)|d{3.4}-)?d{7,8}$"正确格局为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。 验证身份证号(15位或18位数字):"^d{15}|d{18}$"。 验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格局为:"01"~"09"和"1"~"12"。 验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格局为;"01"~"09"和"1"~"31"。整数或者小数:^[0-9]+.{0,1}[0-9]{0,2}$ "^w+$" //由数字、26个英文字母或者下划线组成的字符串 "^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$" //email地址 "^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$" //url可输出形如2008、2008-9、2008-09、2008-9-9、2008-09-09. ^(d{4}|(d{4}-d{1,2})|(d{4}-d{1,2}-d{1,2}))$ 邮箱验证正则表达式 w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)* 四、网络验证利用技巧验证 E-mail格局public bool IsEmail(string str_Email) { return System.Text.RegularExpressions.Regex.IsMatch(str_Email,@"^([w-.]+)@(([−9]1,3.[−9]1,3.[−9]1,3.)|(([w−]+.)+))([a−zA−Z]2,4|[−9]1,3)(?)$"); } ...

September 17, 2020 · 3 min · jiezi

关于正则表达式:正则表达式口诀及教程

转载于:https://blog.csdn.net/weng_xianhu/article/details/10096863正则其实也势利,削尖头来把钱揣; (指开始符号^和结尾符号$) 特殊符号认不了,弄个倒杠来引路; (指\. \*等特殊符号) 倒杠前面跟小w, 数字字母来示意; (\w跟数字字母;\d跟数字) 倒杠前面跟小d, 只有数字来示意; 倒杠前面跟小a, 报警符号嘀一声; 倒杠前面跟小b, 单词分界或退格; 倒杠前面跟小t, 制表符号很明了; 倒杠前面跟小r, 回车符号晓得了; 倒杠前面跟小s, 空格符号很重要; 小写跟罢跟大写,多得切实不得了; 倒杠前面跟大W, 字母数字靠边站; 倒杠前面跟大S, 空白也就靠边站; 倒杠前面跟大D, 数字从此靠边站; 倒框前面跟大B, 不含结尾和结尾; 单个字符要反复,三个符号来帮忙; (* + ?) 0 星加1 到无穷,问号只管0 和1; (*表0-n;+表1-n;?表0-1次反复) 花括号里学识多,反复操作能力强; ({n} {n,} {n,m}) 若要反复字符串,园括把它括起来; ((abc){3} 示意字符串“abc”反复3次 ) 非凡汇合自定义,中括号来帮你忙; 本义符号行不通,一个一个来排队; 切实多得排不下,横杠请来帮个忙; ([1-5]) 尖头放进中括号,反义定义威力大; ([^a]指除“a”外的任意字符 ) 1竖作用可不小,两边正则互替换; (键盘上与“\”是同一个键) 1竖能用很屡次,简单定义很不便; 园括号,用处多; 反向援用指定组,数字排符对应它; (“\b(\w+)\b\s+\1\b”中的数字“1”援用后面的“(\w+)”) 反对组名自定义,问号加上尖括号; (“(?<Word>\w+)”中把“\w+”定义为组,组名为“Word”) 园括号,用处多,地位指定全靠它; 问号等号字符串,定位字符串后面; (“\b\w+(?=ing\b)”定位“ing”后面的字符串) 若要定位串前面,两头插个小于号; (“(?<=\bsub)\w+\b”定位“sub”前面的字符串) 问号加个惊叹号,前面跟串字符串; PHPer都晓得, !是取反的意思; 前面不跟这一串,通通合乎来报到; (“\w*d(?!og)\w*”,“dog”不合乎,“do”合乎) 问号小于惊叹号,前面跟串字符串; 后面不放这一串,通通合乎来报到; 点号星号很贪心,加个问号不贪心; 加号问号有保底,至多反复一次多; 两个问号老规矩,0次1次团团转; 花括号后跟个?,贪心变成不贪心; 还有很多装不下,等着当前来减少 ...

August 14, 2020 · 1 min · jiezi

玩转正则表达式推荐一个速查调试验证可视化工具

作为一个程序员、当代码农,时不时你会需要去写点正则表达式。但是,正则它毕竟不是一门语言,不是所有的程序员都会,或者说非常精通,有时候,你会遇到非常奇葩的正则表达式,可能你又写不出来,老大还急着要!项目还离不了你的这个正则表达式。 这时候,你肯定会抓耳挠腮,心想,要是有一个可以通过条件生成正则表达的工具,那该是有多好啊!在程序员的世界,哪里有需求,哪里就有开发,这不,还真就有这么一个吊炸天的工具:iHateRegex 。 github地址:https://github.com/geongeorge...i Hate Regex是一个在线开源工具,可快速检索并匹配到合适的正则表达式,帮你完成如用户名、邮箱、日期、手机号码、密码等常见规则的验证。 它有以下几个特点: 可视化正则表达式匹配的字符串-测试区域在您的网站上嵌入正则表达式可视化正则表达式代码突出显示和验证支持降价的正则表达式说明在Playground页面上,您可以创建自己的表达式并链接到它。用户登录并保存正则表达式访问及使用方式 它有两种访问及使用方式:1、在线,2、本地安装 1、在线访问直接访问https://ihateregex.io/ 2、本地安装 #安装 yarn (已安装的可以忽略)npm install -g yarn#克隆仓库git clone https://github.com/geongeorge/i-hate-regex.git#安装依赖yarn install#在本地测试yarn dev#打包并运行nuxt服务器yarn buildyarn start这个项目是用Nuxt.js打包。更详细的信息可以参考Nuxt.js文档民工哥建议还是使用在线的方式比较方便、实用,毕竟源码安装还涉及到很多框架的使用,没必要去花这种的学习成本。 使用截图 在首页点击下方的playground,进入页面: 这里,我们就可以看到,对应的正则表示式和匹配过程示意图。 在这里我们还可以修改正则表达式,对应的示意图也随之改变 另外再页面左侧导航栏上方可以搜索想要的正则表达式 这里我们输入IP,点击第一个(ip address(ipv4)) 非常的方便,实用,对于日常的工作使用肯定是已经足够了。 有兴趣的读者可以自己去尝试、探索一番,同时,如果你感觉这个小工具挺好、挺实用,请点个在看与转发分享出去,让更多的人去使用它,来提高工作效率。 也欢迎读者朋友们留言分享你所使用过的、实用的小工具。 更多精彩技术干货文章,也可以关注民工哥的微信公众号。

July 8, 2020 · 1 min · jiezi