资讯专栏INFORMATION COLUMN

正则的贪婪,前瞻及属性详解

pepperwang / 2044人阅读

摘要:正则的三种方法编译正则表达式。返回找到的值,并确定其位置。规定匹配的类型。用于全局匹配,用于区分大小写,用于全局区分大小写的匹配。非贪婪匹配就是匹配到结果就好,就少的匹配字符。对象是否具有标志。正则表达式的源文本。

对正则的深入学习

学习正则我们不能光看看几个修饰符就可以了,因为正则还有许多深入的知识,下面我就来为大家扒一扒。。。

正则的三种方法

compile 编译正则表达式。

exec 检索字符串中指定的值。返回找到的值,并确定其位置。

test 检索字符串中指定的值。返回 true 或 false。

.compile()的用法

compile() 方法用于在脚本执行过程中编译正则表达式,也可用于改变和重新编译正则表达式。

语法
RegExpObject.compile(regexp,modifier)
参数详解
regexp    正则表达式。
modifier    规定匹配的类型。"g" 用于全局匹配,"i" 用于区分大小写,"gi" 用于全局区分大小写的匹配。
实例

在字符串中全局搜索 "man",并用 "person" 替换。然后通过 compile() 方法,改变正则表达式,用 "person" 替换 "man" 或 "woman",

var str="Every man in the world! Every woman on earth!";
patt=/man/g;
str2=str.replace(patt,"person");
document.write(str2+"
"); patt=/(wo)?man/g; patt.compile(patt); str2=str.replace(patt,"person"); document.write(str2);

输出

Every person in the world! Every woperson on earth!
Every person in the world! Every person on earth!
.exec()的用法

exec() 方法用于检索字符串中的正则表达式的匹配。

语法
RegExpObject.exec(string)

参数
string 要检索的值

实例

我们需要找到my,并检索

var str = "hi my name is motor how are you";
var reg = /my/;
reg.exec(str)

输出my

.test()的用法

test() 方法用于检测一个字符串是否匹配某个模式.

语法
RegExpObject.test(string)

参数
string 要检索的值

实例

我们需要找到my,并检索

var str = "hi my name is motor how are you";
var reg = /my/;
reg.test(str)

输出true

贪婪 什么是正则表达式的贪婪与非贪婪匹配

  如:String str="abcaxc";
    Patter p="ab*c";

贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c)。

非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c)。

编程中如何区分两种模式

默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。

量词:

{m,n}:m到n个 
*:任意多个
+:一个到多个
?:0或一个
前瞻 正向前瞻
//判断一个单词字符之后是否是数字(正向前瞻),是的话,则符合匹配,进行替换
var str = "a2*3";
var reg = /w(?=d)/g;
str.replace(reg,"X");
>>result: "X2*3"
反向前瞻
//判断一个单词字符之后是否是非数字(负向前瞻),是的话,则符合匹配,进行替换
var str = "a2*3";
var reg = /w(?!d)/g;
str.replace(reg,"X");
>>result: "aX*X"
属性

ignoreCase RegExp 对象是否具有标志 i。

global RegExp 对象是否具有标志 g。

multiline RegExp 对象是否具有标志 m。

source 正则表达式的源文本。

lastIndex 一个整数,标示开始下一次匹配的字符位置。

source
var reg = /name/;
reg.source

输出name

lastIndex
var str = "hi my name is motor how are you";
    var reg = /m/g;
    console.log(reg.exec(str))
    console.log(reg.lastIndex)
    console.log(reg.exec(str))
    console.log(reg.lastIndex)
    console.log(reg.exec(str))
    console.log(reg.lastIndex)
    console.log(reg.exec(str))
    console.log(reg.lastIndex)
    console.log(reg.exec(str))
    console.log(reg.lastIndex)
    console.log(reg.exec(str))
    console.log(reg.lastIndex)

输出

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84925.html

相关文章

  • JavaScript正则表达式总结

    摘要:正则表达式一直是里比较难以掌握的点。在中创建正则的两种方式使用字面量这就是正则表达式的字面量语法,表示正则表达式的模式,为正则表达式的标志。字面量形式的正则表达式一般使用较多,也推荐大家尽可能使用这种形式,简洁易读,符合正常的使用习惯。 正则表达式一直是js里比较难以掌握的点。 看不懂,学不会,记不住。 每次需要用到正则的时候,都需要再去查找资料。 今天花时间把正则的知识点总结下,希望...

    big_cat 评论0 收藏0
  • js正则表达式学习笔记

    摘要:说来惭愧,做前端快三年对于正则表达式的应用还是很浅薄,大家都知道正则的速度基本上是最快的,但就是懒得去记那些语法和规则,这次项目中多次用到了需要匹配替换的动作,终于下定决心去研究一下了。 说来惭愧,做前端快三年对于正则表达式的应用还是很浅薄,大家都知道正则的速度基本上是最快的,但就是懒得去记那些语法和规则,这次项目中多次用到了需要匹配替换的动作,终于下定决心去研究一下了。 实例化正则对...

    Towers 评论0 收藏0
  • 熟练掌握这十种字符,你正则表达式就没问题

    摘要:元字符代表一类字符元类字符有或者的意思。里还可以有数字大小写字母。比如输出量词量词是用来修饰字符的。 元字符 [ ] [ ] 代表一类字符(元类字符), [ ]有或者的意思,。比如[abc],意思就是a或b或c。 [ ]里还可以有数字.大小写字母。比如[0-9a-zA-Z] var str=diauhvvdai; var reg=str.replace(/[ha...

    liangzai_cool 评论0 收藏0
  • JS核心知识点梳理——正则篇(上)

    摘要:正则引言正则是一个前端必须掌握的知识。这里上篇先介绍正则的规则,下篇结合一些具体题目,带大家重新学习巩固一下正则,争取面试给自己加分。 正则 showImg(https://segmentfault.com/img/bVbo4hv?w=1800&h=1000); 引言 正则是一个前端必须掌握的知识。但是由于用的少,忘了记,记了忘,导致面试经常坐蜡。这里上篇先介绍正则的规则,下篇结合一些...

    happyhuangjinjin 评论0 收藏0
  • ——————【 正则表达式 】——————

    摘要:正则表达式边界及前瞻边界整个字符串开头结尾单词的边界前瞻正向前瞻反向前瞻正则的对象属性属性描述对象是否具有标志。正则表达式的源文本。支持正则表达式的对象的方法方法描述检索与正则表达式相匹配的值。替换与正则表达式匹配的子串。 ——————【 正则表达式 】—————— 复习字符串操作 indexOf 查找字符 返回位置 charAt 查找位置 返回字符 substring 获取字符窜 ...

    fuchenxuan 评论0 收藏0

发表评论

0条评论

pepperwang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<