正则掌握程度测试题

分组提取/非捕获组 分组,是正则里一个非常重要的概念,我们需要针对某个区域提取数据,往往需要依赖分组。而分组,其实就是正则里()括住的部分。 分组提取 需求:在分组1中匹配meta中author属性的值 源串: <meta author="Zjmainstay" /> another author="Zjmainstay too" 预期:分组1得到Zjmainstay 正则:/"(\w*)"/ 非捕获组 针对上面的分组,有时候,我们并不需要捕获某个分组的内容,我们可以使用非捕获组(?:表达式),从而不捕获表达式部分内容到分组中。 需求:匹配每行字母个数是偶数个的数据,每行数据不为空,正则不能存在分组1 源串: a ab abc abcd 预期: 匹配得到 ab 和 abcd,不包含分组1 正则:/^(?:\w\w)+$/m 单字符或 或条件是正则使用过程中常用的概念,比如,密码由字母或数字组成,这里就用到了或条件,而且,由于字母或数字都是单个字符,因此,可以使用[a-z0-9]这样的单字符或语法实现。 常犯错误:匹配a或b写成[a|b],此表达式实际上表示a或b或|,在[]内部的|表示其本身,注意区分(a|b)表示a或b的写法。 单字符或 需求:匹配由 A/S/D/F 4个字母(区分大小写)组成的长度为3字符串 源串: ABC ASD ADS ASF BBC A|S A|D ASDF 预期:以[]元字符获得3个字母的或集,匹配 ASD/ADS/ASF 3组数据 正则:/^[ASDF]{3}$/m 多字符或 相对单字符或条件,多字符或也是很常见的,比如,我们需要匹配http或ftp两个协议头的url,就需要^(http|ftp)://.+$这样的语法来实现。 多字符或 需求:匹配每行数据中以.jpg/.jpeg/.png/.gif结尾的图片名称(含后缀) 源串: image.jpg image.jpeg image.png image.gif not_image.txt not_image.doc not_image.xls not_image.ppt 预期:匹配 image.jpg/image.jpeg/image.png/image.gif 4个结果 正则:/(.*\.(jpg|jpeg|png|gif))/m ...

May 5, 2018 · 4 min · ZhaoGuibin

正则^的用法

^在[]外面表示以[]里的字符为首 ^在[]里面表示不匹配[]里的字符

May 1, 2018 · 1 min · ZhaoGuibin