正则RegExp的懒惰性和贪婪性; 分组捕获;

1.正则的懒惰性???

每次在它的方法exec中捕获的时候,只捕获第一次匹配的内容,而不往下捕获,我们把这种情况称为正则的懒惰性

且每一次捕获的位置都是从索引0开始

正则的实例对象上有一个lastindex的属性,是正则开始捕获的起始位置

var reg=/\d+/;

var st="abc123efg456";

console.log(reg.exec(st))输出123

如何解决正则的懒惰性呢

用一个修饰词“g”就可以了

2.正则的贪婪性???

每次匹配到的结果都是最长的,把这种情况称为贪婪性。

var reg=/\d+/;

var st="abc12345"

console.log(reg.exec(st))  结果是12345

如何让解决他的贪婪性呢

在元字符量词后加?

var reg=/\d+?/g

3.分组捕获  /(   )/;

分组捕获的作用(1)改变优先级(2)分组引用

\1   \2分别为跟第一组和第二组出现同样的内容

var reg=/(\w)\1(\w)\2/;

var st="sstt"

console.log(reg.test(st))==true

分组捕获的前提是正则存在分组,而且是不仅会捕获到大正则,也会捕获到小正则的内容

var reg=/(a)(b)/

var st="abcd"

console.log(reg.exec(st))  结果输出是  ab  a  b

那么该如何解决这种情况呢

在不想让它出现的那个前面加?:

var reg=/(a)(?:b)/

var st="abcd"

console.log(reg.exec(st))    结果输出的是   ab  a

原文地址:https://www.cnblogs.com/qinlinkun/p/10144599.html

时间: 2024-08-30 11:45:19

正则RegExp的懒惰性和贪婪性; 分组捕获;的相关文章

js学习总结----分组捕获

正则分组: 1.改变优先级 2.分组引用 //\2代表和第二个分组出现一模一样的内容:\1和第一个分组出现一模一样的内容:和对应的分组中的内容的值都要一样 var reg = /^(\w)\1(\w)\2$/ console.log(reg.test("zzff")) //true 3.分组捕获 ->正则在捕获的时候,不仅仅把大正则匹配的内容捕获到,而且还可以把小分组匹配的内容捕获到. (?:)在分组中?:的意思是只匹配不捕获 match和exec也是有一点区别的

mysql 使用正则REGEXP匹配字段中的中文字符

1.匹配包含中文和其他字符的字段: SELECT * FROM table WHERE HEX(name) REGEXP '[[:<]]*(e[4-9][0-9a-f]{4})+.*[[:>:]]' 2.匹配只包含中文.字母.数字的字段 : SELECT * FROM table WHERE HEX(name) REGEXP '[[:<:]](e[4-9][0-9a-f]{4}|3[0-9]|4[0-9A-F]|5[0-9A]|6[0-9A-F]|7[0-9A]|5F)+[[:>:

C# 正则分组捕获

分组语法 捕获 (exp) 匹配exp,并捕获文本到自动命名的组里 (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) (?:exp) 匹配exp,不捕获匹配的文本 位置指定 (?=exp) 匹配exp前面的位置 (?<=exp) 匹配exp后面的位置 (?!exp) 匹配后面跟的不是exp的位置 (?<!exp) 匹配前面不是exp的位置 注释 (?#comment) 这种类型的组不对正则表达式的处理产生任何影响,只是为了提

正则RegEXp

JavaScript RegExp 对象 RegExp 对象 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具. 直接量语法 /pattern/attributes 创建 RegExp 对象的语法: new RegExp(pattern, attributes); 参数 参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式. 参数 attributes 是一个可选的字符串,包含属性 "g"."i" 和 "m&quo

正则表达式分组捕获非捕获的示例理解

举几个例子 一.使用捕获型() 比如0.23 1.(^\d+)(\.)(\d{0,2}) 正则表达式有3个()使用match就会产生3个分组 2.^\d+\.\d{0,2} 没有(),不产生分组 二.非捕获型(?:) (?:^\d+)(\.)(\d{0,2}) 第一个分组不再捕获 原文地址:https://www.cnblogs.com/zhaogaojian/p/12207959.html

[转载]ValidationExpression验证规则

ValidationExpression验证规则 在ASP.NET中,ValidationExpression 验证规则属性可以根据自已的需要,对输入的数据进行限制,其常用符号如下表所示: 符号  说明 []  用来定义单一字符的内容. {}  用来定义需输入的字符个数. . 表示任意字符. * 表示最少可以不输入,最多到无限多个字符. + 表示最少输入1 个字符,最多到无限多个字符. [^...]  表示不包含的字符. 「[] 」符号 [] 符号可以用来定义接受的单一字符,例如: [a-zA-

PHP正则表达式详解(一)

前言: 半年前我对正则表达式产生了兴趣,在网上查找过不少资料,看过不少的教程,最后在使用一个正则表达式工具RegexBuddy时,发现他的教程写的非常好,可以说是我目前见过最好的正则表达式教程.于是一直想把他翻译过来. 本文是Jan Goyvaerts为RegexBuddy写的教程的译文,版权归原作者所有,欢迎转载.但是为了尊重原作者和译者的劳动,请注明出处!谢谢! 1.什么是正则表达式 基本说来,正则表达式是一种用来描述一定数量文本的模式.Regex代表Regular Express.本文将用

深入浅出之正则表达式(一)

前言:       本文是Jan Goyvaerts为RegexBuddy写的教程的译文,版权归原作者所有,欢迎转载.但是为了尊重原作者和译者的劳动,请注明出处!谢谢!   1.      什么是正则表达式 基本说来,正则表达式是一种用来描述一定数量文本的模式.Regex代表Regular Express.本文将用<<regex>>来表示一段具体的正则表达式. 一段文本就是最基本的模式,简单的匹配相同的文本. 2.      不同的正则表达式引擎 正则表达式引擎是一种可以处理正则表

深入浅出之正则表达式(一)转载http://dragon.cnblogs.com/archive/2006/05/08/394078.html

深入浅出之正则表达式(一) 前言:       半年前我对正则表达式产生了兴趣,在网上查找过不少资料,看过不少的教程,最后在使用一个正则表达式工具RegexBuddy时发现他的教程写的非常好,可以说是我目前见过最好的正则表达式教程.于是一直想把他翻译过来.这个愿望直到这个五一长假才得以实现,结果就有了这篇文章.关于本文的名字,使用“深入浅出”似乎已经太俗.但是通读原文以后,觉得只有用“深入浅出”才能准确的表达出该教程给我的感受,所以也就不能免俗了.       本文是Jan Goyvaerts为