首页 > 编程知识 正文

js金额正则表达式,javascript 正则

时间:2023-05-04 19:13:47 阅读:155828 作者:2065

在node的glob模块中,可以使用*等符号编写glob规则。 像shell一样,检索与相应规则匹配的文件。

这个glob工具基于javascript。 它使用minimatch库进行匹配

使用方法:

首先下载glob包:

NPM安装指南

调用格式:

varglob=require(glob ) ) options是可选的glob((**.js )、options、function )、er、files )///files是匹配文件的数组

“globs”是一种模型,例如,drdsp在命令行中输入ls *.js,或者输入在. gitignore文件中写入的bulid/*。

解析路径模型时,大括号内的多个逗号分隔的内容可以展开,中间部分可以包含“/”。 例如,a{/b/c,bcd}将被展开到a/b/c和abcd

路径中的某一段可以使用下面的这些字符表示,他们各自都有很炫的作用:

1. * :此路径段中至少0个字符的任意字符: //*:匹配路径中的某个部分至少:0个字符的glob('js/*.js ',function(er,files ) console.log

2 .是此路径段的任意一个字符: //?具有匹配路径的部分:1字符glob('js/?) . js ',function(er,files ) console.log (files ) ) )获取js目录下所有名称只有一个字符的js。

3. [.] :与路径段中指定范围内的字符:匹配

请注意不能组合。 单个字符//[]:匹配路径的一部分:指定的范围glob('js/a[0-3].js ',function(er,files ) console.log ) ) (文件)

4.* (pattern ) :匹配括号中多个模型的零个或多个或任意组合

注意|前后有空格//* (pattern ) :匹配路径的部分:以上的模型中不能有0个以上。//除了三个模型本身之外,组合也可以像ab.js一样使用,但不能像ab.js那样只在一个模型中使用function(er,files ) { console.log } files为js

5 . (pattern ) :匹配不包含模型

需要注意: (pattern )不等于! () ) (/! (pattern ) :匹配路径中的部分:不包含模型。 带有//a或b的除外。 请注意*(a|b )的逆glob (不是' js/(a|b ).js ',function(er,files ) console.log (files ) ) )是js迪

6 . (pattern ) :匹配多个模型中的0个或任意一个。

和4的区别是不能组合。 必须完全一致

//? (pattern ) :匹配路径的某个部分的:个以上的模型中,0个或1个.//准确的匹配模型是. glob(js/? (a|a2|b ).js ',function(er,files ) (console.log ) files ) ) )位于js目录下的a.js、a2.js、b

7.(pattern ) :匹配多个模型中的一个或多个。

与4的区别在于,具有空不一致//(pattern ) :匹配路径的部分必须至少有:个模型。 //可以是任何模型,也可以是它们的组合。 例如,ab.jsglob ) ' js

a.js,a1.js,b.js,或者a,a1,b这几个字符的组合的js,比如ab.js
 

8. @(pattern|pat*|pat?erN) : 匹配多个模型中的任意1个. //@(pattern|pattern|pattern): 匹配路径中的某部分: 多个模型中的1个.//精确匹配模型,不可以组合.和?的区别就是不可以为空.必须要是其中的一个.glob("js/@(a|a1|b).js",function (er, files) { console.log(files)})

和 6 的区别是不匹配为空的情况
 

9. ** : 和 1 一样,可以匹配任何内容,但**不仅匹配路径中的某一段,而且可以匹配 'a/b/c' 这样带有'/'的内容,所以,它还可以匹配子文件夹下的文件.  //**: 不是一个单独的路径中的某部分,而是可以带有'/',所以所有当前文件夹和子文件夹下都进行匹配glob("**/@(a|a1|b).js",function (er, files) { console.log(files)})

获取当前目录所有文件夹及子文件夹下的a.js,a1.js,b.js
还有一种方式是设置 matchBase 属性为 true ,同样可以起到在当前路径下搜索所有子文件夹的效果:

//matchBase: 设置为true以后,在当前目录下所有的文件夹和子文件夹里寻找匹配的文件glob("@(a|a1|b).js",{matchBase:true},function (er, files) { console.log(files)})

没有获取到任何匹配文件:

当glob没有获取到任何匹配的文件是,并不会像shell里那样返回模型本身,files参数返回的是一个空数组,如果需要让files返回的是模型本身,需要设置 nonull 属性为 true

//nonull: 设置为true以后,如果没有找到匹配的文件,不返回空字符串,而是返回原始glob语句glob("@(c|d|e).js",{nonull:true},function (er, files) { console.log(files)})

同步获取匹配文件列表:

前面讲到的都是异步的方法,传入一个回调,当获取到匹配的文件的时候执行回调.如果需要同步的获取文件列表,可以这样做:

var files = glob.sync(pattern, [options])

Glob类:

通过实例化一个glob.Glob类,可以获得一个glob对象:

var Glob = require("glob").Globvar mg = new Glob(pattern, options, cb)

实例化的时候传入的参数和glob(pattern,options,cb)是一样的.

它能够得到一个返回值,这个返回值是一个EventEmitter.

如果在选项中设置 sync 属性为 true, 表示同步获取.不可以传入cb回调. 要获取匹配结果,可以通过 g.found 来获取:

var globInstance = new glob.Glob("@(a|a1|b).js",{nonull:true,matchBase:true,sync:true});console.log(globInstance.found);

事件:

end :  end事件会在文件匹配结束,找出所有匹配结果的时候触发,它接受的参数就是找到的文件的数组match :  match事件会在每次匹配到一个文件的时候触发,它接受的参数就是匹配到的文件error :  error事件会在匹配遇到错误的时候触发.接受的参数就是错误信息abort :  当实例调用了.abort()方法时,abort事件被触发

方法:

pause 暂停匹配搜索resume 继续匹配搜索abort 永远停止匹配搜索,不能继续

var globInstance = new glob.Glob("js/@(a|a1|b).js",{nonull:true});globInstance.on('match',function(file){ console.log(file)});globInstance.on('end',function(files){ console.log(files)});globInstance.on('abort',function(){ console.log('abort')});globInstance.pause();globInstance.resume();globInstance.abort();

属性:

minimatch glob所使用的minimatch对象.options 传递给函数的options选项.aborted 调用过abort()函数后它的值就是true.cachestatCachesymlinksrealpathCache 

options选项:

options用于配置模型匹配时候的匹配方式. 所有可以被传入到minimatch里的参数也都可以被传入到glob,另外node-glob还自己添加了一些配置项.

所有的选项如果没有特殊说明,默认值都是false

所有的选项也都适用于Glob类.

cwd root dot nomount marknosort stat silent strict cachestatCache symlinks sync nounique nonull debugnobracenoglobstar noextnocase matchBase nonull nodir ignore follow realpath nonegate nocomment

原谅我这么多选项实在不想一个一个翻译过来了.......................毕竟大多数也用不到,如果有特殊需求,再查看文档吧............

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。