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

Wesley13
• 阅读 389

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

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 )练习。

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

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

为你推荐


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

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
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
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
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
Stella981 Stella981
3年前
Nepxion Discovery【探索】微服务企业级解决方案
!Alttext(https://oscimg.oschina.net/oscnet/965ad00f540b3c8fbc2bcb789cc028696fa.jpg)NepxionDiscovery【探索】微服务企业级解决方案】NepxionDiscovery【探索】使用指南
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
AJPFX总结关于Java中过滤出字母、数字和中文的正则表达式
1、Java中过滤出字母、数字和中文的正则表达式(1)过滤出字母的正则表达式\^(AZaz)\(2)过滤出数字的正则表达式\^(09)\(3)过滤出中文的正则表达式\^(\\\\u4e00\\\\u9fa5)\(4)过滤出字母、数字和中文的正则表达式\^(azAZ09\\\\u
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这