博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript学习-正则表达式
阅读量:6709 次
发布时间:2019-06-25

本文共 2333 字,大约阅读时间需要 7 分钟。

Date

在JavaScript中,Date对象用来表示日期和时间

系统时间,自己创建时间都可以

以后用到再查

 

RegExp

正则表达式:用一种描述性的语言来给字符串定义一个规则

了解最基本的例子即可 

 

精确匹配:也就是一对一的匹配

\d可以匹配一个数字'00\d'可以匹配'007',但无法匹配'00A';\d\d\d'可以匹配'010'\w可以匹配一个字母或数字'\w\w'可以匹配'js'.可以匹配任意字符'js.'可以匹配'jsp'、'jss'、'js!'等等

 

变长字符:可能有多个符合的匹配

用+表示至少一个字符用?表示0个或1个字符* 号代表字符可以不出现,也可以出现一次或者多用{n}表示n个字符,用{n,m}表示n-m个字符

 

\d{3}\s+\d{3,8}\d{
3}表示匹配3个数字,例如'010';\s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配' ','\t\t'等;\d{
3,8}表示3-8个数字,例如'1234567'。综合起来,上面的正则表达式可以匹配以任意个空格隔开的带区号的电话号码。如果要匹配'010-12345'这样的号码呢?由于'-'是特殊字符,在正则表达式中,要用'\'转义,所以,上面的正则是\d{3}\-\d{3,8}

 

用[]表示范围

//如果后面没有{N},那么[]是精确匹配[0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线;[0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100','0_Z','js2015'等等;[a-zA-Z\_\$][0-9a-zA-Z\_\$]*可以匹配由字母或下划线、$开头,后接任意个由一个数字、字母或者下划线、$组成的字符串,也就是JavaScript允许的变量名;//第一个[]前面没有{},是一个字符//第二个[],是0个数字,或者19个数字[a-zA-Z\_\$][0-9a-zA-Z\_\$]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。

 

开头和结束

A|B可以匹配A或B,所以(J|j)ava(S|s)cript可以匹配'JavaScript'、'Javascript'、'javaScript'或者'javascript'。^表示行的开头,^\d表示必须以数字开头。$表示行的结束,\d$表示必须以数字结束。你可能注意到了,js也可以匹配'jsp',但是加上^js$就变成了整行匹配,就只能匹配'js'了。

 

RegExp

匹配字符串

/*第一种方式是直接通过/正则表达式/写出来,第二种方式是通过new RegExp('正则表达式')创建一个RegExp对象。*/var re1 = /ABC\-001/;var re2 = new RegExp('ABC\\-001');re1; // /ABC\-001/re2; // /ABC\-001/var re = /^\d{3}\-\d{3,8}$/;re.test('010-12345'); // truere.test('010-1234x'); // falsere.test('010 12345'); // false

 

提取分组

//用()表示的就是要提取的分组(Group)//3个数字开头,3或者8个数字结尾var re = /^(\d{3})-(\d{3,8})$/;re.exec('010-12345'); // ['010-12345', '010', '12345']re.exec('010 12345'); // null //exec()方法在匹配成功后,会返回一个Array,第一个元素是正则表达式匹配到的整个字符串,后面的字符串表示匹配成功的子串。

 

贪婪匹配

正则会匹配尽量多的字符串

//由于\d+采用贪婪匹配,直接把后面的0全部匹配了,结果0*只能匹配空字符串了。//+ 至少一个var re = /^(\d+)(0*)$/;re.exec('102300'); // ['102300', '102300', '']/*必须让\d+采用非贪婪匹配(也就是尽可能少匹配),才能把后面的0匹配出来,加个?就可以让\d+采用非贪婪匹配*///这里的?不是正则里面的?的意思,只是为了不贪婪//遇到符合后面一个分组的情况下,前面就会停止var re = /^(\d+?)(0*)$/;re.exec('102300'); // ['102300', '1023', '00']

 

一个匹配邮箱的正则,当然只针对了下面几个用例

//数字或字母开头//中间可能有一个点,因为.是正则的符号,所以给他加[]和\//数字和字母中间//@//数字和字母//一定有一个点,精确匹配//最后是com或orgvar re = /^[a-zA-Z0-9]+[\.]{0,1}[a-zA-Z0-9]*@[a-zA-z0-9]+\.(com|org)$/;    should_pass = ['someone@gmail.com', 'bill.gates@microsoft.com', 'tom@voyager.org', 'bob2015@163.com'],    should_fail = ['test#gmail.com', 'bill@microsoft', 'bill%gates@ms.com', '@voyager.org'];

 

转载于:https://www.cnblogs.com/weizhibin1996/p/9277080.html

你可能感兴趣的文章
haproxy 配置详解
查看>>
nginx代理resin
查看>>
Java编程最差实践
查看>>
linux运维常用命令
查看>>
axis开发webservice
查看>>
网络系统集成工程师——十八般武艺
查看>>
我的友情链接
查看>>
ping命令加入时间戳并写入文本
查看>>
linux下如何把一个用户加到管理员组
查看>>
CodeForces 483C Diverse Permutation
查看>>
我的友情链接
查看>>
mrtg监控网络流量简单配置
查看>>
解决“连接U8数据库服务器失败”的方法尝试
查看>>
把oracle数据库恢复到某个时间点或者某个scn
查看>>
分组背包问题
查看>>
css的再深入4(更新中···)
查看>>
一道面试题
查看>>
大公司里怎样开发和部署前端代码?
查看>>
如何安装pycharm
查看>>
《Windows Internal》(2)
查看>>