加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 22:01:22 所属栏目:百科 来源:网络整理
导读:正则表达式的用途 测试字符串的某个模式(数据有效性验证) 替换文本。 根据模式匹配从字符串中提取一个子字符串 正则表达式的语法 创建正则表达式 var patt=new RegExp(pattern,modifiers);//要加引号或者更简单的方式:var patt=/pattern/modifiers;partter

正则表达式的用途

  1. 测试字符串的某个模式(数据有效性验证)

  2. 替换文本。

  3. 根据模式匹配从字符串中提取一个子字符串

正则表达式的语法

创建正则表达式

var patt=new RegExp(pattern,modifiers);//要加引号
或者更简单的方式:
var patt=/pattern/modifiers;
parttern(模式)描述了表达式的模式
//modifiers(修饰符)用于指定全局匹配,区分大小写,和多行匹配
  • new RegExp()方式

var re = new RegExp();//RegExp是一个对象,和Aarray一样  
//但这样没有任何效果,需要将正则表达式的内容作为字符串传递进去  
re =new RegExp("a");//最简单的正则表达式,将匹配字母a  
re=new RegExp("a","i");//第二个参数,表示匹配时不分大小写

RegExp构造函数第一个参数为正则表达式的文本内容,而第二个参数则为可选项标志.标志(修饰符)可以组合使用

var re = new RegExp("a","gi");//匹配所有的a或A
  • 字面量

var re = /a/gi;

方括号

方括号用于查找某一范围内的字符

元字符

元字符是拥有特殊含义的字符

量词

正则表达式分组

非捕获组:(?:...),用来代替少量不又没的捕获型分组,不会干扰捕获型分组的编号
捕获组:(...),一个捕获型分组将复制它所匹配的文本,将其放入result数组中。每个捕获型分组将被指定一个编号。从1开始,放入result[1]
向前正向匹配:(?=...),类似于非捕获型分组,但是在这个分组匹配过后,文本将倒回它开始的地方,实际上不匹配任何东西
向前负向匹配:(?!...)勒西与向前正向匹配(非捕获型分组),但是只有当它匹配失败时才进行匹配

与 的使用
1指向分组1所捕获的文本的一个引用,所以它可以被再次匹配
例如:(搜索文本中重复的单词)
n指向分组n中的引用

  • 例子1:给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false

function containsRepeatingLetter(str) {
    var partern = /([a-zA-Z])1/;
    return partern.test(str);
 
}
  • 例子2:js实现千分位分隔符

<span style="font-size:14px;">
function format (num) {  
    var reg=/d{1,3}(?=(d{3})+$)/g;   
    return (num + '').replace(reg,'$&,');  
}
</span>

正则表达式 d{1,3}(?=(d{3})+$) 表示前面有1~3个数字,后面的至少由一组3个数字结尾。

?=表示正向引用,可以作为匹配的条件,但匹配到的内容不获取,并且作为下一次查询的开始。

$& 表示与正则表达式相匹配的内容,具体的使用可以查看字符串replace()方法的

正则对象属性

  1. source:返回正则表达式模式的文本的复本。只读。

  2. gobal:【返回布尔值】是否全局匹配

  3. ignoreCase:【返回布尔值】是否忽视大小写

  4. multiline:【返回布尔值】是否跨行

  5. lastIndex:返回字符位置,它是被查找字符串中下一次成功匹配的开始位置。

正则对象方法

  1. compile:可以在脚本执行过程中编译正则表达式,也可以改变已有表达式。把正则表达式编译为内部格式,从而执行的更快。

  2. test:用来检测一个字符串是否匹配某个正则表达式,如果匹配成功,返回 true ,否则返回 false;【返回布尔值】

  3. exec:用来检索字符串中与正则表达式匹配的值。exec() 方法【返回一个数组】,其中存放匹配的结果。如果未找到匹配的值,则返回 null;

  4. toString:字符串形式的模式

支持正则表达式的String方法

replace与正则表达式完成转换

function rgb2hex(sRGB) {
   return sRGB.replace(/^rgb((d+),s*(d+),s*(d+))$/g,function(a,r,g,b){//a为匹配项,从第二个最第四个参数都是捕获组
       return '#' + hex(r) + hex(g) + hex(b);
   });
}
function hex(n){
    return n < 16 ? '0' + (+n).toString(16) : (+n).toString(16);
}

参考链接:
菜鸟教程正则表达式

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读