正则表达式

来源:互联网 发布:java实现邮箱发送邮件 编辑:程序博客网 时间:2024/05/06 22:16

用处:

  • 测试字符串内的模式。
    例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。
  • 替换文本。
    可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。
  • 基于模式匹配从字符串中提取子字符串。
    可以查找文档内或输入域内特定的文本。

如果正则表达式带有g修饰符,则每一次test方法都从上一次结束的位置开始向后匹配。同时,可以通过正则对象的lastIndex属性指定开始搜索的位置。

var xReg = /x/g;var str = 'xyz_x1_y1_x3';xReg.lastIndex; // 0xReg.test(str); // truexReg.lastIndex; // 1xReg.test(str); // truexReg.lastIndex; // 5// 指定位置开始 指定下次匹配从最后一位开始,就匹配不到了xReg.lastIndex = 11; // 11xReg.test(str); // falsexReg.lastIndex; // 0

实践:

var indexReg = /^(?:http|https).+\/jwebui\/pages\/themes\/(\w+)\/\1\.jspx(\?\S+)?$/i ;
  • 最开始的^ 和最后的$分别表示匹配的开始和结束。
  • (?:http|https)表示两者之一,这么写是非获取的组匹配,()不会被分组存储。也可以写成(http|https) 但是后面的\1就需要替换成\2了,因为这么写时此处形成了第一个分组。
  • .+ 就是任意字符至少出现一次。
  • \/jwebui\/pages\/themes\/ 就是匹配字符串”/jwebui/pages/themes/”。
  • (\w+) 作为第一个分组,表示任意字母或数字或下划线或汉字至少出现一次。
  • \1表示对第一个分组的引用,再重复第一分组的内容 。
  • .jspx 表示.jspx。
  • (\?\S+)? 表示(\?\S+) 匹配的内容出现0次或一次。其中:
    \? 表示? 。
    \S+ 表示任意可见字符出现至少一次。

将字符串转换为驼峰表示法

function toCampStyle(str){   var reg=/-([a-z]+)/ig;   return str.replace(reg,function(all,letter){       return letter.slice(0,1).toUpperCase()+letter.slice(1)   })}

检测有无重复字母

var reg=/([a-zA-Z])\1/g;var str='aadididi'console.log(reg.test(str))

实现千分位分隔符

function format (num) {      var reg=/\d{1,3}(?=(\d{3})+$)/g;       return (num + '').replace(reg, '$&,');  }
0 0
原创粉丝点击