美文网首页
正则表达式

正则表达式

作者: 真的吗_a951 | 来源:发表于2018-06-29 17:21 被阅读0次

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

一、创建

JavaScript通过内置对象RegExp 支持正则表达式,有两种方式创建正则表达式对象,如果我们想匹配字符串中<%xxx%>两个百分号分割的字符串可以这么写

①构造函数
var reg = new RegExp('<%[^%>]+%','g');
②字面量(简写)
var reg= /<%[^%>]%>/g;
修饰符(参数)
g:global 全文搜索,不添加的话搜索到第一个结果停止搜索,所有符合规则的全部匹配出来。
i:ingore case忽略大小写,默认大小写敏感,大小写都可以匹配到
m:multiple lines多行搜索

二、元字符

( { [ \ ^ $ | ) ? * + .并不是每个字符都有特定的意义,在不同组合中元字符有不同的意义。

字符 含义
\t 水平制表符
\r 回车符
\n 换行符
\f 换页符
\cX 与x对应的控制字符(ctrl+x)
\v 垂直制表符
\0 空字符

三、字符类

一般情况下正则表达式一个字符(转义字符算一个)对应一字符串一个字符。

  • 范围var reg = /[a-z0-9A-Z]/ig[]表示获取之内的范围内的值,可以自己设置成任意一段字符串,表示在这个范围内获取值,
  • 取反[^···]表示获取这个范围内没有的值

四、预定义类

正则表达式提供了几个常用的预定义类来匹配常见的字符

字符 等价类 含义
. [^\r\n] 除了回车符和换行符之外的所有字符
\d [0-9] 数字字符
\D [^0-9] 非数字字符
\s [\t\n\x0B\f\r] 空白符(回车、换行、制表、空格)
\S [^\t\n\x0B\f\r] 非空白符
\w [a-zA-Z_0-9] 单词字符,字母,数字下划线
\W [^a-zA-Z_0-9] 非单词字符

/x0B/垂直tab

边界

字符 含义
^ 以xxx开头
$ 以xxx结尾
\b 单词边界
\B 非单词边界

注意
^不在中括号内,/^hello/g表示匹配以hello开头的字符串,没有返回null
$的用法是/hello$/g在字符串最后
\b单词边界,/\bhello\b/g表示前后都要有边界(空格或者中横线、开头或者结尾,还有\t,\n,\r),/\bhello/g表示只要前面有边界就可以匹配到。

量词

为了匹配连续出现n次的字符串,正则表达式引入了一些量词,

字符 含义
? 出现零次或一次(最多出现一次)
+ 出现一次或多次(至少出现一次)
* 出现零次或多次(任意次)
{n} 出现n次
{n,m} 出现n-m次
{n,} 至少出现n次

量词前的字符串有括号,表示要整个字符串匹配才算匹配,如果没有括号,最后一个字符串也在量词匹配的范围

(url:含http://或者https://或者//都表示标准的url)
只对前一个字符有作用

//判断是否符合url标准:
str.math(/https?:\/\/.+/) //包含http或者https
str.math(/^(https?:)?\/\/.+/) // 包含http、https、//

如何判断用户输入的是不是一个手机号
str1.match(/^1[3578]\d{9}$/g)//满足条件

贪婪模式

默认尽可能多的匹配
举个栗子:

var str = 'hello everyone "I" am "cjj" xixixi'
str.match(/".*"/)
//.表示除了回车和换行之外的所有字符
//*表示任意次
//结果是"I" am "cjj"

分析:
① 执行".*:因为str整个字符串都满足.*又表示任意次,所以按照顺序,匹配到第一个"号开始,到最后一个字符i结束。
str.match((/".*"/)执行到第二个",发现匹配的最后一个不是"号,于是开始往回找,找最后一个"号,因此输出不是分别含有""的字符串。

非贪婪模式

非贪婪模式和贪婪模式相反,可通过在代表数量的标识符后放置?来开启非贪婪模式。 默认尽可能少的 匹配

var str = 'hello everyone "I" am "cjj" xixixi'
str.match(/".*?"/) //"I" "cjj"

其他重点

  • 前面的方法都是针对其前一个字符,若要看成一个整体,需要加()

  • 若是两个字符串都需要匹配(frist|second),表示或,会把两边看做一个整体

  • 前瞻

表达式 含义
exp1(?=exp2) 匹配后面是exp2的exp1
exp1(?!exp2) 匹配后面不是exp2的exp1

正则表达式的方法

  • reg.test(str); //true或者false;判断str是否符合reg规则
  • exec(str)持续运行
var str = '123 456 789'
var reg = /\d{3}/g
while(result = reg.exect(str)){
    console.log(result[0]
}
//123
//456
//789

(字符串)

  • .split(reg)复杂分隔
    'a1b2c3d'.split(/\d/);//["a","b","c","d"]
  • .search(reg)不进行全局匹配,会忽略glastIndex属性,并且只会从字符串的开始进行检索,返回字符串的第一个匹配位置。
'a1b2c3'.search(/\d/g); //1
'a1b2c3'.search(/\d/); //1
  • .match(reg)找到一个或多个匹配文本。
  • .replace(reg,replaceStr)可以吧符合正则的东西做一个替换。

举个栗子

相关文章

  • Linux命令行与Shell脚本编程大全-shell正则表达式

    本章内容: 定义正则表达式 了解基本正则表达式 扩展正则表达式 创建正则表达式 定义正则表达式 正则表达式是你定义...

  • 正则相关

    正则表达式基本语法 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 正则表达式逻辑或...

  • 正则表达式系列-1

    正则表达式系列-1正则表达式系列-2正则表达式系列-3正则表达式系列-4 什么是正则表达式 正则表达式就是用事先定...

  • 正则表达式

    正则表达式 - 教程正则表达式 - 简介正则表达式 - 语法正则表达式 - 元字符正则表达式 - 运算符优先级正则...

  • Python基础入门 - 正则表达式与综合实战

    1. 初识正则表达式 1.1 介绍 步骤介绍正则表达式入门及应用正则表达式的进阶正则表达式案例 1.2 正则表达式...

  • Java正则表达式参考

    Java正则表达式入门 java正则表达式应用 深入浅出之正则表达式(一) 深入浅出之正则表达式(二) 正则表达式...

  • 正则表达式

    正则表达式 正则表达式就是记录文本规则的代码 正则表达式常用的元字符 正则表达式常用的限定符 正则表达式举例:这里...

  • Python爬虫(十)_正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • python正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • 正则表达式

    了解正则表达式基本语法 能够使用JavaScript的正则对象 正则表达式简介 什么是正则表达式 正则表达式:用于...

网友评论

      本文标题:正则表达式

      本文链接:https://www.haomeiwen.com/subject/rdpoyftx.html