位置: 编程技术 - 正文

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区别)

  • 水电费进项税转出填在哪一栏位
  • 应交税费会计分录怎么做明细科目
  • 劳务报酬支出 怎么做账
  • 核定征收财务报表
  • 建筑业确认收入的时间是按进度计量么
  • 进口货物的应纳增值税
  • 中外合资房地产公司
  • 航空运单可以作为提货凭证吗
  • 建设用地规划许可证和建设工程规划许可证的区别
  • 银行承兑汇票怎么填写
  • 劳务公司计提工资怎么算
  • 农产品收购发票图片
  • 代收代付给个人
  • 技术服务合同增值税税率3%
  • 个人所得税必须得交吗
  • 如何购买车辆保险
  • 营改增金融业税收政策
  • 技术转让怎么算成本
  • 外地餐费计入什么账户
  • 招投标费用如何收取
  • 租赁合同维修义务谁承担
  • 差额征税通俗理解
  • php判断ua
  • 委托加工物资加工费计入
  • PHP:curl_multi_close()的用法_cURL函数
  • 事业单位利息收入
  • win11玩游戏鼠标卡顿
  • f12开发者工具调试打不开
  • Calanques de Piana岩层上的一个心形洞,法国科西嘉岛 (© joningall/Getty Images)
  • 向日葵茎上有刺吗
  • 资产减值损失影响当期利润吗
  • centos7安装keepalived
  • 投资性房地产的减值准备可以转回吗
  • 金税盘可以全额抵税吗
  • 劳务派遣公司的注册资本最低限额为
  • 员工奖励现金如何做账
  • 企业计提增值税的会计科目
  • 管理费用只能在借方吗
  • 结转清理损失会计分录
  • 融资租赁视同销售吗
  • mysql中文乱码怎样用代码解决
  • 无产权证房屋转让需要公证吗
  • 房地产土地使用权计入存货吗
  • 增值税发票用完后如何领取新的
  • 营改增后材料价差调整
  • 个体升一般纳税人的界限
  • mysql怎么防止sql注入
  • 个人接私活需要什么条件
  • 生育津贴是怎么申请
  • 进口葡萄酒政策
  • 税审报告需要什么资料
  • 中小微企业优惠政策
  • 向投资者分配利润或股利为什么减少所有者权益?
  • 行政单位如何做好机构编制工作
  • 合伙企业应该用什么会计制度
  • 如何科学设置运动负荷
  • ubuntu安装软件没反应
  • ubuntu gz
  • centos分区说明
  • win7系统怎样设置
  • 格式化不干净
  • linux去掉指定字符
  • win10每次登录都要输入微软密码
  • win8设置无线网络
  • 如何解决win7系统不稳定
  • centos 安装chia
  • Win10 Mobile 10586.164中文版升级截图曝光
  • unity加密解决方案
  • opengl基础知识
  • jquery通过扩展select控件实现支持enter或focus选择的方法
  • shell根据时间获取文件
  • javascript运行在什么的脚本语言
  • 使用forever管理nodejs应用教程
  • unity二段跳
  • [置顶]马粥街残酷史
  • 税控盘登录密码和口令
  • 个体户注销税盘需要公章吗
  • 全资子公司和全资子企业的区别
  • 西安市经开区税务
  • 医疗机构执业许可证办理的条件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设