位置: 编程技术 - 正文

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

  • 增值税专票开错了可以作废吗
  • 全国增值税发票查验平台入口
  • 税务会计常用会计科目
  • 定额税改为查账征收,可以弥补上年度亏损吗
  • 提成过高
  • 蓝字发票和红字一样吗
  • 收到幼儿园园服费怎么做财务处理?
  • 未交增值税借方表示什么
  • 预期信用损失影响坏账准备吗
  • 个体工商户核定征收税率
  • 购买的金蝶软件怎么记账
  • 幼儿园属于小型幼儿吗
  • 个人所得税能否跨年度
  • 材料实际成本包括哪些内容
  • 退增值税政策
  • 收入工程款后什么时候计提印花税
  • 子公司之间可以相互交易吗
  • 私立医院收到投诉信
  • 公车补贴计入什么科目
  • 预付绩效工资是什么意思
  • 分支机构企业所得税计提和缴纳数额不一致怎么办?
  • 费用发票的种类
  • 跨省的分公司亏损需要缴纳所得税吗?
  • 税控盘怎么打票
  • 开发票零税率和免税是一样的意思吗
  • 估价入账是什么意思
  • 企业申请增值税专用发票
  • 个税免税收入填错了怎么办
  • 小规模的成本票
  • 凭证类别不合法怎么处理
  • 企业承担社保
  • 事业基金弥补收支差额
  • 自制销售清单可以公开吗
  • 小企业会计准则会计科目表
  • 政府奖励如何记账
  • 什么是进项税和销项税
  • 利息股息红利所得属于综合所得吗
  • 补缴增值税滞纳金天数
  • mcshield.exe是什么进程
  • 员工重复报销后如何处理
  • 利润分配弥补亏损会计分录
  • 会计凭证附件规范要求
  • 结转生产成本的会计科目
  • php读取php文件内容
  • 残疾人保证金优惠减免怎么申请退税
  • 企业所得税是先预缴吗
  • 浅析学校德育的个体智能发展功能
  • 结转完工产品成本的会计科目
  • 小规模纳税人1%税率优惠政策
  • 小规模纳税人减按1%征收率征收增值税
  • 支付航天信息服务费未收到发票怎么处理
  • 个体户核定征收超过了怎么办
  • 会计分录记录于什么中
  • 资产负债表的其他应收款怎么算出来的
  • 去年的管理费用多做了今年怎样调账
  • 个人代人开普票个税怎么算
  • 保证金计算器
  • 增值税明细账怎么结账
  • 房租收不回来会计分录
  • 企业收到海河工厂发运的乙材料,并验收入库
  • 固定资产折旧完了还算固定资产吗
  • 不得从销项税额中抵扣的进项税额,不得计提加计抵减额
  • 工会经费的列支范围有哪些
  • 收入成本率多少合理
  • sql多条件组合条件的先后顺序
  • mac安装mysql详细教程
  • info.exe病毒
  • 安装软件时提示无法访问网络位置
  • linux wc-l
  • linux用
  • opengles 旋转 平移 缩放
  • javascript数据结构
  • css中边界margin的多种定义方法
  • Node.js中的construct
  • node的使用
  • android系统启动流程
  • 中粮副总裁是什么级别
  • 国税发1994 关于个人所得税
  • 融资租赁公司购入老旧租赁资产会计处理
  • ca认证登录不了
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设