一门定义一个的格式使用源码文本
node.js正则表达式
接触过一门语言的人相信大家都知道正则表达式,相信大多数人学了一遍又一遍,还是一脸蒙圈,之前我也和大家有一脸的控货,今天来和大家一起总结总结。
1. 定义一个正则表达式的格式使用。
var reg = /a/ ;
var reg1 = /a/g;
var reg2 = /a/i;
var reg3 = /a/m;
g,i,m是三个标识,可以不要,也可以单独,也可以混用。
g:表示全局,global,可以匹配多次;i:表示对大小写不敏感 ;m:多行
2. 另一种方法:使用RegExp构造器。
var my_regexp = new RegExp(""a"",'g');//使用反斜杠,引号需要转义。
console.log(my_regexp) ; 结果:/"a"/g
RegExp对象有如下属性
my_regexp.global; //如果设置了g则为truemy_regexp.ignoreCase;//如果设置了i,则为truemy_regexp.lastIndex;//下一次exec匹配开始的索引,初始值为0my_regexp.multiline ;//如果设置了m,则为truemy_regexp.source; //正则表达式源码文本
3. 例子:var parse_url = /^(?:([A-Za-z]+):)?/;
^:表示字符串的开始,匹配以XXX开头的字符串
(?:):表示一个非捕获型的分组,非捕获的分组只做一个简单的匹配,并不会捕获所匹配的文本
():表示捕获型分组
[]:表示一个字符类,a-zA-Z这个字符类包含26个大写字母和26个小写字母,-表示范围
?:表示这个分组是可选的,表示重复0次或1次。
+:表示贪婪匹配,表示匹配1次或多次。
后面跟着:,表示会按这个字面进行匹配。
分组后面跟着:,会按这个字面进行匹配*/
var reg1 = /(([A-Za-z]+):)?/;
var reg2 = /(?:([A-Za-z]+):)?/;
reg1.exec('http:xxx:'); //["http:", "http:", "http"]
reg2.exec('http:xxx:'); //["http:", "http"]
4. 例子:var r = /(/{0,3})/
:转移符号
{0,3}:表示匹配0次或1-3次
//接下来一个分组
5. (?::(d+))?
//这是一个可选的分组,匹配有一个冒号和一个或多个数字组成的序列,d表示一个数字字符
6. //接下来这个因子,匹配一个以/开始,之后的字符类?#以一个^开始,表示这个类包含除?和#之外的所有字符。表示这个字符类或被匹配0次或多次(?:/(?#))?
7.(.*):会匹配除行结束符以外的所有字符
8. $:表示字符串的结束,保证这个URL的尾部不会有其它更多的内容
9. //正则表达式分支//一个正则表达式分支包含一个或多个正则表达式序列,这些序列被|字符分隔//如果这些序列的任何一项符合匹配条件js 时间 正则表达式js 时间 正则表达式,那么这个选择就会被匹配。它尝试者按顺序依次匹配这些序列项var reg9 = /in|int/;'into'.match(reg9);
10、//正则表达式因子/* 一个正则表达式因子可以是一个字符,一个由圆括号包围的组,一个字符类,或者是一个转义序列 除了控制字符和特殊字符以外,所有的字符都会被按照字面处理
/ / [ ] () {} ? + | . ^ $
//上面这些字符,如果希望按照字面去处理,则必须使用一个前缀来进行转义//注意前缀不能使字母或数字字面化//未被转义的.会匹配除行结束符以外任何字符
//正则表达式转义//反斜杠在正则表达式因子中与在字符串中一样均表示转义,但在这里,略有不同/* f 换页符 n 换行符 r 回车 t 制表符 b 不是退格符 b 被指定一个字边界,方便用于对文本字边界进行匹配 d 表示数字,等同于[0-9] D表示相反 0-9 s 等同于[fnrtu000Bu0020u00A0u2028u2029] 这是Unicode空白符的一个不完全子集。S 则表示与其相反:fnrtu000Bu0020u00A0u2028u2029 w [0-9A-Z_a-z] W相反 0-9A-Z_a-z
<pre class="md-fences mock-cm md-end-block" lang="" cid="c1066" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 0.9em; white-space: pre-wrap; break-inside: avoid; border: 1px solid rgb(221, 221, 221); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; background-image: inherit; background-attachment: inherit; background-size: inherit; background-origin: inherit; background-clip: inherit; background-position: inherit; background-repeat: inherit;">[A-Za-zu00C0-u1FFFu2800-uFFFD],包括了所有的Unicode字母,但也包括成千上万非字母的字符</pre>
1 是指向分组1所捕获到的文本的一个引用,所以能再次被匹配,2指向分组2的引用,,3以此类推
发表评论
热门文章
Spimes主题专为博客、自媒体、资讯类的网站设计....
一款个人简历主题,可以简单搭建一下,具体也比较简单....
仿制主题,Typecho博客主题,昼夜双版设计,可....
用于作品展示、资源下载,行业垂直性网站、个人博客,....
尘集杂货铺和官网1t5-cn
11月11日
[已回复]
希望主题和播放器能支持SQLite数据库,AI能多个讯飞星火