之前看别人写的插件经常会用到RegExp对象来验证输入,并且获取一些那时我并不晓得是什么东西的数组,来取值进行自定义的逻辑处理。今天学习了一下RegExp类型。终于有了一个初步的了解,至少不会看一会就感觉蒙圈了,记录分享一下

ECMAScript通过RegExp类型来支持正则表达式

语法如下 

var expression =  /pattern / flags;

其中 pattern 部分是正则表达式。 flags 部分用来标明正则表达式的行为,正则表达式的匹配模式支持一下3种:

g:表示全局模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止。

i:表示不区分大小写。

m:表示多行模式,级在到达一行文本末尾时还会继续查找下一行中是否存在鱼模式匹配的项。

举个栗子:

var pattern1= /at/g;  //匹配字符串中所有"at"的实例

var pattern2 = /[bc]at/i; //匹配第一个"bat"或"cat",不区分大小写

了解了正则的语法,下面说一下RegExp实例,上代码说明吧

var pattern = new RegExp("\\[bc\\]at","i");  //创建正则实例

alert(pattern.global);  //false 是否设置全局标识
alert(pattern.ignoreCase); //true 是否不区分大小写
alert(pattern.multiline);  //false 是否设置多行标识
alert(pattern.lastIndex);  //0 表示开始搜索下一个匹配项的字符位置,从0算起
alert(pattern.source);  //"\[bc\]at" 返回按照字面量形式而非传入构造函数中的字符串模式

以上,基本上我们就关系输入的正则表达式和标志符就可以了。下面就是我之前总蒙圈的东西了。终于弄明白都代表了什么,依旧代码说明

var text ="this has been a short summer";
var pattern =/(..)or(.)/g; var matches=pattern.exec(text);
console.log(matches.index); // 16
console.log(matches.input); // this has been a short summer
console.log(matches[0]);  // short
console.log(matches[1]);   // sh
console.log(matches[2]);    // t

下面解释一下

exec()接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回null.

返回的数组是Array实例,但包含两个额外的属性: index 和 input。

其中,

index 表示匹配项在字符串中的位置。(上面代码匹配项为 short ,对应的位置 是16);

input 表示应用正则表达式的字符串。(上面代码的 text变量的值 this has been a short summer);

在数组中,

第一项:表示与整个模式匹配的字符串 (上面代码中的 short 匹配 正则校验);

其它项: 与模式中的捕获组匹配的字符串(如果模式中没有捕获组,则该数组只包含一项)

上述代码匹配模式中包含两个捕获组。第一个为(..),对应捕获的字符为 sh;第二个为(.),对应的捕获字符为 t。

okay. 知道了数组的各项的意义,再看一些插件或库时,就不会一直蒙圈了。当然,我们也可以根据返回的匹配数据来自定义逻辑操作了。

最新文章

  1. 16083001(古墓丽影GPA)
  2. SU suvelan命令学习
  3. Java魔法堂:注释和注释模板
  4. JavaScript 学习—— js获取行间样式和非行间样式
  5. 《大话设计模式》ruby版代码:策略模式
  6. 浅析Mysql 数据回滚错误的解决方法
  7. window.top、window.parent
  8. sqlserver 时间转换
  9. easyDialog弹窗+zTree部门选择
  10. PHP全栈学习笔记17
  11. AngularJS实现可伸缩的页面切换
  12. 1、jeecg 笔记开篇
  13. Power BI 与 Azure Analysis Services 的数据关联:4、Power BI 连接到Azure Analysis Services 并展示
  14. Java-JUC(二):Java内存模型可见性、原子性、有序性及volatile具有特性
  15. 编译时:virtual memory exhausted: Cannot allocate memory(转)
  16. [3G/4G]3G/4G模块开发
  17. Eng1—English daily notes
  18. 路由跟踪工具0trace
  19. mongodb的安装(linux下)
  20. mysql中set和enum使用(简单介绍)

热门文章

  1. 上传伪技术~很多人都以为判断了后缀,判断了ContentType,判断了头文件就真的安全了。是吗?
  2. SQL联合主键 查重
  3. 使用pudb调试python
  4. JavaScript 中的类方法,对象方法,Prototype方法
  5. iOS开发之表视图爱上CoreData
  6. iOS编译FFmpeg、kxmovie实现视频播放 (转载)
  7. 制作动画或小游戏——CreateJS基础类(一)
  8. [ES] 基础概念
  9. CSS3实现图形曲线阴形和翘边阴影
  10. Android中后台的劳动者“服务”