JajavaScript 正则表达式(RegExp)实用指南 (三)【译】

快速实践指南。用示例理解正则表达式。

JavaScript 正则表达式(RegExp)实用指南(一) 介绍了正则表达式的含义,创建方法和测试方法 ,在 JavaScript 正则表达式(RegExp)实用指南 (二) 介绍了正则表达式中的特殊字符,接下来看看几个练习吧。

练习正则表达式

让我们练习上面学到的一些概念。

  • 匹配任何10位数字:

    var regex = /^\d{10}$/;console.log(regex.test('9995484545'));// true
    

    让我们分解一下,看看每步做了什么。

  1. 如果我们要强制匹配必须跨越整个字符串,则可以添加量词^$。插入符号^与输入字符串的开头匹配,而美元符号$与结尾匹配。因此,如果字符串包含的位数超过10位,则不会匹配。

  2. \d匹配任何数字字符。

  3. {10}与上一个表达式匹配,在这种情况下,\d恰好是10倍。因此,如果测试字符串包含的位数少于或大于10,则结果将为false

  • 匹配 以DD-MM-YYYYDD-MM-YY格式 的日期。

    var regex = /^(\d{1,2}-){2}\d{2}(\d{2})?$/;console.log(regex.test('01-01-1990'));// trueconsole.log(regex.test('01-01-90'));// trueconsole.log(regex.test('01-01-190'));// false
    

    让我们分解一下,看看每步做了什么。

  1. 同样地,我们将整个正则表达式包装在^$内,以使匹配跨整个字符串。

  2. ( 第一个子表达式的开始。

  3. \d{1,2} 匹配至少1位和最多2位数字。

  4. - 匹配文字连字符-

  5. ) 第一个子表达式的结尾。

  6. {2} 与第一个子表达式完全匹配两次。

  7. \d{2} 精确匹配两位数。

  8. (\d{2})? 精确匹配两位数。但是它是可选的,因此年份包含2位数字或4位数字。

  • 匹配除换行符之外的所有内容
    表达式应匹配任何格式如abc.def.ghi.jkl的字符串,其中每个变量a,b,c,d,e,f,g,h,i,j,k,l可以是除换行符之外的任何字符。

    var regex = /^(.{3}\.){3}.{3}$/;console.log(regex.test('123.456.abc.def'));// trueconsole.log(regex.test('1243.446.abc.def'));// falseconsole.log(regex.test('abc.def.ghi.jkl'));// true
    

    让我们分解一下,看看每步做了什么。

  1. 我们将整个正则表达式包装在^$内,以便匹配跨整个字符串。

  2. ( 第一个子表达式的开始。

  3. .{3} 与除换行符之外的任何字符完全匹配3次。

  4. \. 匹配字符点.

  5. ) 第一个子表达式的结尾。

  6. {3} 与第一个子表达式完全匹配3次。

  7. .{3} 与除换行符之外的任何字符完全匹配3次。

总结

正则表达式有时可能会相当复杂,但是对上述概念的正确理解将有助于你轻松理解更复杂的正则表达式模式。你可以在这里( https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular\_Expressions )了解有关正则表达式的更多信息,在这里( https://www.hackerrank.com/domains/regex )练习。

方便大家查看,将学习网站和练习网站生成了二维码:

   

为你推荐


本文分享自微信公众号 - 白玉无冰(lamyoung-com)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Opencv中Mat矩阵相乘——点乘、dot、mul运算详解

Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593