nodejs

----

atom ----装个插件script  

atom快捷键 :  ctrl 切换目录,ctrl shift o打开文件家,ctrl o 打开文件,ctrl n新建文件

复习一下正则表达式:

两种写法:

/pattern/flag

new Regex("pattern","flag"); 其中flag包含g全局,i忽略大小写,gi

规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。这句话的意思:pattern是字符串格式,但是也是 符合正则表达式的写法,所以也要进行转义,如:

用第一种写法:/+/,在第二种写法也要 pattern:\b+,是转义字符,也要对本身进行转义

字符量模式 等价的字符串

在正则表达式中字符串中的转义是双重转义,第一种是正则,第二种是正则字符串,第一种对元字符(特数意义的字符,如.,*,+,等等)用,在第二种写法中用\

  1. 要注意的是,传递给RegExp构造函数的两个参数都是字符串
  1. 由于RegExp构造函数的模式参数是字符串,所以在某些情况下要对字符串进行转义
  2. 所有元字符都必须双重转义,那些已经转义过的字符也是如此,例如 (字符在字符串中通常被转义为\,而在正则表达式字符串中就会变成\\
    1. 正则表达式中的元字符包括:( { ^ $ | ) ? * + . ] }

一个正则表达式就是一个模式与上述3个标志的组合体
与其他语言中的正则表达式类似,模式中使用的所有元字符都必须转义
正则表达式中的元字符包括:( { ^ $ | ) ? * + . ] }
这些元字符在正则表达式中都有一或多种特殊用途,因此如果想要匹配字符串中包含的这些字符,就必须对它们进行转义

对于match方法,不是返回索引,而是返回数组,这个数组里面的内容就是匹配的内容,具体的内容跟标记有关,如果是/g返回所有的实例,那么就是匹配的内容

var re=/at/g;
console.log("att".match(re));


[ 'at' ]
[Finished in 0.672s]

  

如果是/i,那么忽略大小写

var re=/at/i;
console.log("att".match(re));

[ 'at', index: 0, input: 'att', groups: undefined ]
[Finished in 0.712s]

如果是/gi,

var re=/at/gi;
console.log("att".match(re));

[ 'at' ]
[Finished in 0.679s]
如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本。除了这些常规的数组元素之外,返回的数组还含有两个对象属性。index 属性声明的是匹配文本的起始字符在 stringObject 中的位置,input 属性声明的是对 stringObject 的引用。

如果 regexp 具有标志 g,则 match() 方法将执行全局检索,找到 stringObject 中的所有匹配子字符串。若没有找到任何匹配的子串,则返回 null。如果找到了一个或多个匹配子串,则返回一个数组。不过全局匹配返回的数组的内容与前者大不相同,它的数组元素中存放的是 stringObject 中所有的匹配子串,而且也没有 index 属性或 input 属性。

 全局检索模式下,返回的结果是数组中的内容不包含匹配内容的具体信息,就只返回匹配的内容,如果想在全局模式下想返回匹配内容的具体信息,可以用exec方法

var re=/at/gi;
console.log(re.exec("att"));

[ 'at', index: 0, input: 'att', groups: undefined ]
[Finished in 0.715s]

默认是/i,不是全局检索,即没有标记的时候

其中^是匹配的开头位置,加了这个那么这个字符串就必须以后面的字母开头,没有这个的话,那么可以在中间有这个内容,$是结束,一样的



原文地址:https://www.cnblogs.com/fpcbk/p/10630089.html