正则表达式

正则表达式:

正则表达式(Regular Expression)是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

创建

  • 构造函数
var reg=new RegExp('<%[^%>]+%>','g');
  • 字面量
 var reg=/<%[^%>]%>/g;

g:global,全文搜索,不添加的话搜索到第一个结果停止搜索
i:ingore case,忽略大小写,默认大小写敏感
m:multiple lines,多行搜索

元字符

正则表达式让人望而却步以一个重要原因就是转义字符太多了,组合非常多,但是正则表达式的元字符(在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符)并不多

空白符

1.png

字符类:用元字符[]来构建一个简单的类, 比如[abcd]代表一个字符,这个字符可以是 abcd四个字符中的任意一个

取反:元字符[]组合可以创建一个类,我们还可以使用元字符^创建反向类/负向类,反向类的意思是不属于XXX类的内容,表达式 [^abc] 表示一个不是字符a或b或c的字符

范围类:

预定义类

2.png

边界:

3.png

量词:

4.png

贪婪模式与非贪婪模式

量词在默认下是尽可能多的匹配的,也就是大家常说的贪婪模式

var str="123456789";
    console.log(str.match(/\d{3,5}/g));\\["12345", "6789"]

既然有贪婪模式,那么肯定会有非贪婪模式,让正则表达式尽可能少的匹配,也就是说一旦成功匹配不再继续尝试,做法很简单,在量词后加上?即

console.log(str.match(/\d{3,5}?/g));\\ ["123", "456", "789"]

分组:使用()

/(hugner){10}/

前瞻

5.png

方法

  • RegExp.prototype.test(str):方法用于测试字符串参数中是否存正则表达式模式,如果存在则返回true,否则返回false
  • RegExp.prototype.exec(str):方法用于正则表达式模式在字符串中运行查找,如果exec()找到了匹配的文本,则返回一个结果数组,否则返回 null
    exec()方法返回对象包括两个属性:
    index 属性声明的是匹配文本的第一个字符的位置
    input 属性则存放的是被检索的字符串string
  • String.prototype.search(reg):search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串
    String.prototype.match(reg):match()方法将检索字符串,以找到一个或多个与regexp匹配的文本。但regexp是否具有标志 g对结果影响很大。
  • String.prototype.replace(reg, replaceStr);String.prototype.replace(reg, function)替换字符串
  • String.prototype.split(reg)把字符串分割为字符数组;

范例:

写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)。

   function isValidUsername(str){
     if(!(/^\w{6,20}$/.test(str)) ) {
         console.log("不是合法的用户名");
     };
   };
 isValidUsername("abcefcge");
 isValidUsername("123"); 

写一个函数isPhoneNum(str),判断用户输入的是不是手机号。

    function isPhoneNum(str) {
        return /^1[3457]\d{9}$/.test(str);
    }
    console.log(isPhoneNum("123abc"));
    console.log(isPhoneNum("13345677890"));

写一个函数isEmail(str),判断用户输入的是不是邮箱。

  function isEmail2(str) {
       return /^[a-zA-Z0-9_-]+@[a-z0-9]+(\.[a-z]+){1,3}$/.test(str);
   }
   console.log(isEmail2("134166abc@abc.com"));

写一个函数trim(str),去除字符串两边的空白字符

  function trim(str){
      return str.replace( /^\s+|\s+$/g,"");
  }
  console.log(trim("    hello world    "));

作者:彭荣辉
链接:https://www.jianshu.com/u/0f804364a8a8
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 正则表达式——基本语法 正则表达式(Regular Expression)是计算机科学的一个概念。正则表达式使用单...
    南山码农阅读 3,311评论 0 1
  • 前言 对于正则,著称火星文字,见名知意主要它晦涩难懂,一直以来,看到它总是怕怕的,在平时,也只是简单的用用,其主要...
    itclanCoder阅读 4,256评论 0 2
  • 正则表达式(Regular Expression)是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系...
    草鞋弟阅读 4,202评论 0 0
  • RegExp对象 字面量 var reg=/\bis\b/g;定义变量reg然后把正则表达式文本写到两个反斜杠之间...
    深沉的简单阅读 5,415评论 0 0
  • 正则表达式 正则表达式(Regular Expression)是计算机科学的一个概念。正则表达式使用单个字符串来描...
    yshenhn阅读 2,870评论 0 0

友情链接更多精彩内容