位置: 编程技术 - 正文

JavaScript类型系统之正则表达式(js的类型有哪几种)

编辑:rootadmin

推荐整理分享JavaScript类型系统之正则表达式(js的类型有哪几种),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript 类型,javascript基本类型有哪些,js的类型有哪几种,javascript类定义,js的类型有哪几种,javascript几种类型,javascript类定义,javascript几种类型,内容如对您有帮助,希望把文章链接给更多的朋友!

定义

  正则又叫规则或模式,是一个强大的字符串匹配工具。javascript通过RegExp类型来支持正则表达式

特性

  [1]贪婪性,匹配最长的  [2]懒惰性,不设置/g,则只匹配第1个

写法

perl写法(使用字面量形式)var expression = /pattern/flags;

  模式(pattern)部分可以是任何简单或复杂的正则表达式,可以包含字符串、限定类、分组、向前查找以及反向引用。每个正则表达式可以带一个或多个标志(flags),用以标明正则表达式的行为。正则表达式支持三个标志:

  [1]g:表示全局模式(global)  [2]i:表示不区分大小写(ignoreCase)  [3]m:表示多行模式(multiline)

RegExp构造函数

  RegExp构造函数接收两个参数:要匹配的字符串模式(pattern)和标志字符串(flags)(可选)

  [注意]RegExp构造函数的两个参数都是字符串。且使用字面量形式定义的任何表达式都可使用构造函数

两种写法的区别

  字面量写法不支持变量,只能用构造函数的形式来写[tips]获取class元素(因为classname是变量,只能使用构造函数的形式)

  [注意]ES3中,正则表达式字面量始终共享同一个RegExp实例,而使用构造函数创建的每一个新RegExp实例都是一个新实例。ES5中规定使用正则字面量必须像直接调用RegExp构造函数一样,每次都创建新的RegExp实例

语法

  [注意]正则表达式中不能出现多余空格

元字符(个)

() [] {} ^ $ | &#; * + .   [注意]元字符必须转义,即用 加转义字符,用new RegExp写的正则必须双重转义

转义字符

. 除换行符n之外的任意字符d 数字D 非数字w 字母、数字、下划线W 非字母、数字、下划线(汉字不属于w)s 空格S 非空格b 边界符(w的左侧或右侧不是w,则会出现一个边界符)B 非边界符1 表示和前面相同的一个字符t 制表符v 垂直制表符uxxxx 查找以十六进制xxxx规定的Unicode字符(u4e-u9fa5代表中文) (w)(d) :1代表w当时所代表的值,2代表d当时所代表的值

  [注意]正则表达式中的子项必须是用小括号括起来的,并且顺序以小括号的前括号出现的顺序为准

[tips]找出重复项最多的字符和个数

系统转义

  alert()和console.log()里面的字符是系统转义字符

空字节n 换行t 制表b 空格r 回车f 进纸\ 斜杠' 单引号" 双引号xnn 以十六进制nn表示一个字符(n为0-f),如x表示'A'unnnn 以十六进制nnnn表示一个Unicode字符(n为0-f),如ua3表示希腊字符ε

  [注意]alert里面的换行不能用<br>或<br>,而应该用n

双重转义

  由于RegExp构造函数的参数是字符串,所以某些情况下,需要对字符进行双重转义。所有元字符必须双重转义,已经转义过的字符也必须双重转义

量词

{n} 匹配n次{n,m} 匹配至少n次,最多m次{n,} 匹配至少n次&#; 相当于{0,1}* 相当于{0,}+ 相当于{1,}

位置符号

^ 起始符号$ 结束符号&#;= 肯定正向环视&#;! 否定正向环视

控制符号

[] 候选| 或 ^ 非- 到

(red|blue|green) 查找任何指定的选项 [abc] 查找方括号之间的任何字符[^abc] 查找任何不在方括号之间的字符[0-9] 查找任何从0到9的数字[a-z] 查找任何从小写a到小写z的字符[A-Z] 查找任何从大写A到大写Z的字符[A-z] 查找任何从大写A到小写z的字符[adgk] 查找给定集合内的任何字符[^adgk] 查找给定集合外的任何字符

$符号

$$ $$& 匹配整个模式的子字符串(与RegExp.lastMatch的值相同)$` 匹配子字符串之前的子字符串(与RegExp.leftContext的值相同)$' 匹配子字符串之后的子字符串(与RegExp.rightContext的值相同)$n 匹配第n个捕获组的子字符串,其中n等于0-9。$1表示匹配第一个捕获组的子字符串(从第1个算起)$nn 匹配第nn个捕获组的子字符串,其中nn等于-

构造函数属性

  适用于作用域中的所有正则表达式,并且基于所执行的最近一次正则表达式操作而变化。关于这些属性的独特之处在于可以通过两种方式访问它们,即长属性名和短属性名。短属性名大都不是有效的ECMAScript标识符,所以必须通过方括号语法来访问它们

长属性名 短属性名      说明input $_ 最近一次要匹配的字符串lastMatch $& 最近一次的匹配项lastParen $+ 最近一次匹配的捕获组leftContext $` input字符串中lastMatch之前的文本multiline $* 布尔值,表示是否所有表达式都使用多行模式rightContext $' Input字符串中lastMarch之后的文本

  使用这些属性,可以从exec()方法或text()方法执行的操作中提取出更具体的信息

//javascript有9个用于存储捕获组的构造函数属性。RegExp.$1RegExp.$2RegExp.$3……到RegExp.$9分别用于存储第一、第二……第九个匹配的捕获组。在调用exec()或test()方法时,这些属性会被自动填充

实例属性

JavaScript类型系统之正则表达式(js的类型有哪几种)

  通过实例属性可以获知一个正则表达式的各方面信息,但却没多大用处,因为这些信息都包含在模式声明中global:   布尔值,表示是否设置了g标志ignoreCase: 布尔值,表示是否设置了i标志lastIndex: 整数,表示开始搜索下一个匹配项的字符位置,从0算起multiline: 布尔值,表示是否设置了标志msource:    正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回

继承的方法

  共toString()、toLocaleString()和valueOf()三个方法,且都返回正则表达式字面量,与创建正则表达式的方式无关。要注意的是toString()和toLocaleString()返回的正则表达式的字符串表示,而valueOf返回的是正则表达式对象本身

实例方法

exec()

  专门为捕获组而设计,接受一个参数,即要应用模式的字符串。然后返回包含第一个匹配项信息的数组。在没有匹配项的情况下返回null。返回的数组包含两个额外的属性:index和input。index表示匹配项在字符串的位置,input表示应用正则表达式的字符串。在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串,如果模式中没有捕获组,则该数组只包含一项

  [注意]对于exec()方法而言,即使在模式中设置了全局标志(g),它每次也只会返回一个匹配项。在不设置全局标志的情况下,在同一个字符串上多次调用exec(),将始终返回第一个匹配项的信息;而在设置全局标志的情况下,每次调用exec()都会在字符串中继续查找新匹配项。IE8-在lastIndex属性上存在偏差,即使在非全局模式下,lastIndex属性每次也会变化

[tips]用exec()方法找出匹配的所有位置和所有值

test()

  接受一个字符串参数,在模式与该参数匹配的情况下返回true,否则返回false  [注意]常用于只想知道目标字符串与某个模式是否匹配,但不需要知道其文本内容的情况,经常用在if语句中

模式匹配方法

  String类型定义了几个用于在字符串中匹配模式的方法

match()

  只接受一个参数,正则或字符串,把匹配的内容保存到一个数组中返回  [注意]加上全局标记时,match()方法返回值中没有index和input属性

[1]不加/g

[2]加/g

[3]字符串

  只接受一个参数,正则或字符串,返回匹配的内容在字符串中首次出现的位置,类似于不能设置起始位置的indexOf,找不到返回-1

[1]正则(加/g和不加/g效果一样)

[2]字符串

[tips]找出匹配的所有位置

replace()

  该方法接收两个参数:第一个为正则表达式或字符串(待查找的内容)、第二个为字符串或函数(替换的内容)

[1]字符串替换

[2]正则无/g替换

[3]正则有/g替换

[4]函数替换

  在只有一个匹配项(即与模式匹配的字符串的情况下,会向这个函数传递3个参数:模式的匹配项、模式匹配项在字符串中的位置、原始字符串。在正则表达式定义了多个捕获组的情况下,传递给函数的参数依次是模式的匹配项、第一个捕获组的匹配项、第二个捕获组的匹配项……第N个捕获组的匹配项,但最后两个参数仍然分别是模式的匹配项在字符串中的位置和原始字符串,这个函数返回一个字符串

[tips]防止跨站脚本攻击xss(css)

split()

  这个方法可以基于指定的分隔符将一个字符串分割成多个字符串,并将结果放在一个数组中,分隔符可以是字符串,也可以是一个RegExp。该方法可以接受第二个参数(可选)用于指定数组的大小,如果第二个参数为0-array.length范围内的值时按照指定参数输出,其他情况将所有结果都输出

  [注意]IE8-对split()中的正则表达式,会忽略捕获组

[tips]如果是split(''),则原来的数组会一个字符字符分割后传出来

局限性

  下列为ECMAScript正则表达式不支持的特性

  [1]匹配字符串开始的结尾的A和Z锚(但支持以^和$来匹配字符串的开始和结尾)  [2]向后查找(但支持向前查找)  [3]并集和交集类  [4]原子组  [5]Unicode支持(单个字符除外)  [6]命名的捕获组(但支持编号的捕获组)  [7]s(single单行)和x(free-spacing无间隔)匹配模式    [8]条件匹配  [9]正则表达式注释

常见实例

[1]两种方法找出字符串中所有的数字  [a]用传统字符串操作

  [b]用正则表达式

[2]敏感词过滤(replace方法的函数匹配)

[3]日期格式化

[4]获取网页中的文本内容

[5]去除首尾空格的trim()兼容写法

关于JavaScript类型系统之正则表达式 的全部内容就给大家介绍到这里,希望本文所述能够帮助到大家。

js与jQuery实现checkbox复选框全选/全不选的方法 本文实例讲述了js与jQuery实现checkbox复选框全选/全不选的方法。分享给大家供大家参考,具体如下:先来看看JavaScript实现checkbox复选框全选/全不选的方

javascript简单比较日期大小的方法 本文实例讲述了javascript简单比较日期大小的方法。分享给大家供大家参考,具体如下://获取起始日期varstartDate=document.all.startdate.value;//转换为日期格式

javascript设置和获取cookie的方法实例详解 本文实例讲述了javascript设置和获取cookie的方法。分享给大家供大家参考,具体如下:1.设置cookiefunctionsetCookie(cookieName,cookieValue,cookieExpires,cookiePath){cookieV

标签: js的类型有哪几种

本文链接地址:https://www.jiuchutong.com/biancheng/384708.html 转载请保留说明!

上一篇:JS常见问题之为什么点击弹出的i总是最后一个(javascript常见问题)

下一篇:js与jQuery实现checkbox复选框全选/全不选的方法(jquery js区别)

  • 个人所得缴税租房减免该怎么弄?
  • 从租计征房产税怎么申报
  • 股票初始计量后按新金融准则计入哪个科目
  • 如何写财务制度
  • 建筑服务专用发票需要进项吗
  • 无形资产的摊销,可摊销的标准是什么?
  • 小规模购买金税盘
  • 事业单位结余如何分配
  • 企业购进口汽车会计分录
  • 全额拨款事业单位工资都一样吗
  • 营改增后购房发票怎么开
  • 营改增后建筑服务包括内容
  • 股权转让过程中需要注意哪些问题
  • 企业会计准则应用案例
  • 个人所得税的速算扣除数是什么意思
  • 怎么核算租赁合同的印花税?
  • 2018年工资薪金个税起征点
  • 简易征收是优惠政策吗
  • 发票总金额怎么算折扣
  • 收取专利使用费怎么支出
  • 周转材料盘点报告单
  • 固定资产作为投资入股为何体现在资本公积
  • 工信部推出一键解绑怎么用
  • 贷款贴息是什么政策
  • 冲减预付账款是什么意思
  • PHP:Memcached::set()的用法_Memcached类
  • form表单提交数组
  • php rar
  • 增值税会自动申报吗
  • thinkphp demo
  • 写字楼租赁房产税
  • 少数股东权益贷方表示什么意思
  • 运动目标检测算法
  • 异地提供建筑服务预缴企业所得税
  • 包装费和售后服务的区别
  • 如何开发客户群体
  • 电子发票冲红后对方能查到吗
  • 我们买得起一辆新车吗?英文
  • reactjs.org
  • 应付账款和应收账款的关系
  • 贷款呆账准备金
  • 什么叫利得
  • 劳务报酬所得项目
  • 查看db2状态
  • 企业所得税的征税对象包括( )
  • 调整以前年度费用如何做分录
  • 员工持股平台合伙企业
  • 收到银行承兑汇票后,如何取钱
  • 顺流交易为什么不考虑出售比例
  • 以前年度损益调整账务处理分录
  • 其他应付款在贷方表示什么
  • 退回的个税手续费如何账务处理
  • 怎么填写专用发票信息
  • 发票开票服务名称
  • 原股东决定
  • 收派服务与快递服务区别
  • 销售废旧物资如何入账
  • 年度利润总额怎么填
  • MySQL下载安装视频
  • 怎么快速
  • linux中find命令基本使用方法
  • windows与linux的关系
  • linux修改ipv6地址
  • windows关机电源不断电
  • win8.1系统怎么样
  • window无法正常启动怎么办
  • win10系统自带杀毒软件
  • 3dmax创建图形怎么用
  • js类的实现
  • 苹果mac安装
  • python怎么图像处理
  • 计算机图形学中点画圆法
  • 辅组什么词?
  • javascript新手教程
  • nodejs mocha
  • Node.js中的核心模块包括哪些内容?
  • python基本入门
  • 国家税务总局2018年61号公告
  • 潍坊昌邑售房信息
  • 北京车船税新标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设