博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2020-09-09---正则表达式
阅读量:3960 次
发布时间:2019-05-24

本文共 2104 字,大约阅读时间需要 7 分钟。

正则表达式

一、什么是正则表达式

匹配字符串的一组规则

二、如何声明正则表达式

1.字面量 /正则表达式/标志位

2.构造函数 new RegExp(‘正则表达式’,‘标志位’)

三、正则的方法

1.正则表达式.test(字符串)

判断字符串中是否包含了正则表达式,如果有,返回true,如果没有,返回false

2.正则表达式.exec(字符串)

字符串处理正则的方法

1.字符串.match(正则表达式):返回数组

2.字符串.search(正则表达式):查询正则匹配的字符串在父串中第一次出现的下标位置,没有匹配,返回-1;

3.字符串.replace() : 替换

exec 与match的区别

//无g无组的情况:都匹配第一个,结束//只要能匹配到一次,就返回匹配到的内容var str = 'how do you do';var re = /do/;console.log(re.exec(str));  //['do']console.log(str.match(re));   //['do']//有g无组的情况:match将匹配所有的字符//exec只要能匹配到一次,就返回匹配到的字符//match会返回所有的匹配到的,匹配到几次就有几个数组元素var str = 'how do you do';var re = '/do/g'console.log(re.exec(str));  //['do']console.log(str.match(re));  //['do','do]//无g有组的情况:都返回数组,第一个元素是整个正则匹配的内容(只返回第一次匹配到的),其它元素是由组匹配的内容var str = 'abc 123,abc 123';var re = /([a-z]+) (\d+)/;console.log(re.exec(str));  //['abc 123','abc','123']console.log(str.match(re));  //['abc 123','abc','123']//有g有组的情况:exec不受g的影响。match将返回所有匹配的父级(整个正则匹配的内容)var str = 'abc 123,abc 123';var re = /[a-z]+ [0-9]+/g;console.log(re.exec(str));  //['abc 123',[abc],[123]]console.log(str.match(re));  //['abc 123','abc 123']

exec

  • 不受g的影响,如果没有组,则只获取第一次匹配的内容。如果有组,则获取一个父级,多个子级。

match

  1. 没g没组:只获取一个匹配的内容
  2. 有g没组:获取所有匹配的内容
  3. 没g有组:获取一个父级,多个子级
  4. 有g有组:获取多个父级

四、正则的元字符(三二二三三个一)

1.{} [] ()

(1){} :限制{}前面的一个或一组字符连续出现的次数

  1. {m} : 限制{}前面的一个或一组字符连续出现m次
  2. {m,} :限制{}前面的一个或一组字符连续出现m至无暇次
  3. {m,n} :限制{}前面的一个或一组字符连续出现m至n次
var o_txt = document.querySelector('inout');//失焦事件 + 正则表达式 === 表单验证o_txt.onblur = function(){
//获取输入内容 var str = this.value; //定义正则表达式 var re = /^金{3}$/; //var re = /^金{3,}$/; if(re.test(str)){
//判断str中是否有re close(); }}

(2)[]:表示范围

/^[abc]{
3,}$/ : 字符串必须是至少3位的a-c中的字符/^[a-z]$/i 等价于 /^[a-zA-Z]$/[0-9][\u4e00-\u9fa5] : 中文

(3)():表示组

2. * + ?

限制{}前面的一个或一组字符连续出现的次数

(1)* 限制{}前面的一个或一组字符连续出现 0至 无限次 等价于 {0,}

(2)+ 限制{}前面的一个或一组字符连续出现 1至 无限次 等价于{1,}

(3)?限制{}前面的一个或一组字符连续出现 0 至 1 次 等价于{0,1}

3.^ $

(1)^

1.放到正则表达式的开头,表示断头,限制字符串开头必须为什么
2.放到[]的前面,表示取反

(2)$ 表示断尾,限制字符串必须以什么结尾

4. . | \

(1). : 模糊匹配任意一个字符

(2)| :或者

(3)\ : 转义符

\d : 表示数字 [0-9]

\D : 表示非数字 [^0-9]
\w : 表示数字、字母、下划线 [a-zA-Z0-9_]
\W : 非(字母、数字、下划线)
\s :空白
\S :非空白
\b : 单词 边界
\B : 非边界

五、标志位

i : 表示布区分大小写

g:表示全局匹配

转载地址:http://evqzi.baihongyu.com/

你可能感兴趣的文章