`

regexp正则

 
阅读更多

 

 正则表达式的基本语法如下2种:

  1. 直接量语法:

         /pattern/attributes;

     2. 创建RegExp对象的语法

         new RegExp(pattern,attributes);

 

\ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。 
-或- 
对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*"。 

^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a" 
$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A" 
* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa 
+ 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa 
? 匹配前面元字符0次或1次,/ba*/将匹配b,ba 
(x) 匹配x保存x在名为$1...$9的变量中 
x|y 匹配x或y 
{n} 精确匹配n次 
{n,} 匹配n次以上 
{n,m} 匹配n-m次 
[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符) 
[^xyz] 不匹配这个集合中的任何一个字符 
[\b] 匹配一个退格符 
\b 匹配一个单词的边界 
\B 匹配一个单词的非边界 
\cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M 
\d 匹配一个字数字符,/\d/ = /[0-9]/ 
\D 匹配一个非字数字符,/\D/ = /[^0-9]/ 
\n 匹配一个换行符 
\r 匹配一个回车符 
\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等 
\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/ 
\t 匹配一个制表符 
\v 匹配一个重直制表符 
\w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9] 
\W 匹配一个不可以组成单词的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。

 

 

 

正则表达式m修饰符:

m修饰符规定正则表达式可以执行多行匹配。
m修饰符的作用是修改^和$在正则表达式中的作用,让它们分别表示行首和行尾,也许这里用字符串头字符串尾比较好。
在默认状态下,一个字符串无论是否换行只有一个开始^和结尾$,如果采用多行匹配,那么每一个行都有一个^和结尾$。

语法结构:
构造函数方式:

new RegExp("regexp","m")

对象直接量方式:

/regexp/m

浏览器支持:
IE浏览器支持此元字符。
火狐浏览器支持此元字符。
谷歌浏览器支持此元字符。

实例代码:
实例一:

1
2
3
var str="This is an\n antzone good";
var reg=/an$/;
console.log(str.match(reg));

以上代码不能够匹配字符串"an",尽管"an"后面已经换行了,但是并没有采用多行匹配,所以不是字符串行的结尾。

实例二:

1
2
3
var str="This is an\n antzone good";
var reg=/an$/m;
console.log(str.match(reg));

以上代码可以匹配字符串"an",因为采用了多行匹配。

实例三:

1
2
3
var reg = /^b/;
var str = 'test\nbbs';
execReg(reg,str);

匹配失败,因为字符串的开头没有b字符。但是加上m修饰符之后:

实例四:

1
2
3
var reg = /^b/m;
var str = 'test\nbbs';
execReg(reg,str);

 

匹配到b,因为加了m修饰符之后,^已经表示行首,由于bbs在字符串第二行的行首,所以可以成功地匹配。

 

 

 

 2.3  量词

  先解释关于量词所涉及到的重要的三个概念

    贪婪(贪心) 如"*"字符 贪婪量词会首先匹配整个字符串,尝试匹配时,它会选定尽可能多的内容,如果 失败则回退一个字符,然后再次尝试回退的过程就叫做回溯,它会每次回退一个字符,直到找到匹配的内容或者没有字符可以回退。相比下面两种贪婪量词对资源的消耗是最大的,

   懒惰(勉强) 如 "?"  懒惰量词使用另一种方式匹配,它从目标的起始位置开始尝试匹配,每次检查一个字符,并寻找它要匹配的内容,如此循环直到字符结尾处。

   占有  如"+" 占有量词会覆盖事个目标字符串,然后尝试寻找匹配内容 ,但它只尝试一次,不会回溯,就好比先抓一把石头,然后从石头中挑出黄金

     "*"(贪婪)   重复零次或更多

     例如"aaaaaaaa" 匹配字符串中所有的a  正则: "a*"   会出到所有的字符"a"

     "+"(懒惰)   重复一次或更多次

       例如"aaaaaaaa" 匹配字符串中所有的a  正则: "a+"  会取到字符中所有的a字符,  "a+"与"a*"不同在于"+"至少是一次而"*" 可以是0次,

       稍后会与"?"字符结合来体现这种区别

     "?"(占有)   重复零次或一次

       例如"aaaaaaaa" 匹配字符串中的a 正则 : "a?" 只会匹配一次,也就是结果只是单个字符a

   "{n}"  重复n次

       例如从"aaaaaaaa" 匹配字符串的a 并重复3次 正则:  "a{3}"  结果就是取到3个a字符  "aaa";

   "{n,m}"  重复n到m次

       例如正则 "a{3,4}" 将a重复匹配3次或者4次 所以供匹配的字符可以是三个"aaa"也可以是四个"aaaa" 正则都可以匹配到

     "{n,}"  重复n次或更多次

       与{n,m}不同之处就在于匹配的次数将没有上限,但至少要重复n次 如 正则"a{3,}" a至少要重复3次

 把量词了解了之后之前匹配电话号码的正则现在就可以改得简单点了^0\d\d\d-\d\d\d\d\d\d\d$ 可以改为"^0\d+-\d{7}$"。

这样写还不够完美如果因为前面的区号没有做限定,以至于可以输入很多们,而通常只能是3位或者4位,

现在再改一下 "^0\d{2,3}-\d{7}"如此一来区号部分就可以匹配3位或者4位的了

 2.4 懒惰限定符

  "*?"   重复任意次,但尽可能少重复 

      如 "acbacb"  正则  "a.*?b" 只会取到第一个"acb" 原本可以全部取到但加了限定符后,只会匹配尽可能少的字符 ,而"acbacb"最少字符的结果就是"acb" 

  "+?"  重复1次或更多次,但尽可能少重复

     与上面一样,只是至少要重复1次

  "??"  重复0次或1次,但尽可能少重复

      如 "aaacb" 正则 "a.??b" 只会取到最后的三个字符"acb"

  "{n,m}?"  重复n到m次,但尽可能少重复

          如 "aaaaaaaa"  正则 "a{0,m}" 因为最少是0次所以取到结果为空

  "{n,}?"    重复n次以上,但尽可能少重复

 

          如 "aaaaaaa"  正则 "a{1,}" 最少是1次所以取到结果为 "a"

 

 

 

var jsExtRegExp = /^\/|:|\?|\.js$/;

alert(jsExtRegExp.test(":"));

alert(jsExtRegExp.test("/sssss"));

alert(jsExtRegExp.test("ssss/.js"));

alert(jsExtRegExp.test("ssss:js"));

alert(jsExtRegExp.test("sssss?js"));

alert(jsExtRegExp.test("ssss.js"))

 

全是true

这里可以看到“|”是完全划分的,以上正则是表示要么“/”开头,要么含有“:”,要么“.js”结尾

分享到:
评论

相关推荐

    JavaScript RegExp 正则表达式对象详细说明

    JavaScript中的RegExp对象是用于处理正则表达式的内置对象,它提供了强大的字符串模式匹配功能。正则表达式(Regular Expression)是一种特殊的字符序列,用于在文本中查找、替换或提取符合特定模式的字符串。 直接...

    regexp正则表达式正则表达式正则表达式

    ### 正则表达式(Regexp)基础知识及高级应用 #### 一、正则表达式的概念与作用 正则表达式(Regular Expression),通常简称为“regex”或“regexp”,是一种用于模式匹配的强大工具,广泛应用于文本处理领域,如...

    RegExp正则表达式

    RegExp 正则表达式 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。RegExp 对象的方法包括 exec()、test()、search()、match()、replace() 和 split() 等。 exec() 方法用于检索字符串中的正则...

    RegExp 正则表达式 常用规则

    js正则 正则表达式就是用于描述一些规则的工具。换句话说,正则表达式就是记录文本规则的代码。常用规则 常用正则 ES6+新增规则

    MySQL中REGEXP正则表达式使用大全

    MySQL数据库支持使用REGEXP操作符进行正则表达式匹配,这是在数据库中进行文本匹配和搜索的强大工具。MySQL遵循POSIX标准,采用了Henry Spencer开发的正则表达式库,同时对其进行了扩展,以更好地适应SQL语句中的...

    MySQL中使用replace、regexp进行正则表达式替换的用法分析

    MySQL数据库作为最流行的开源数据库之一,提供了多种工具来执行这类操作,其中replace函数和regexp正则表达式是强大的工具。replace函数可以通过简单的字符串替换来更新数据,而regexp则可以使用复杂的正则表达式...

    regexptest 正则测验工具

    《regexptest:强大的正则表达式测试工具》 在信息技术领域,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,广泛应用于数据验证、搜索与替换、数据分析等场景。为了帮助开发者和测试人员...

    jakarta-regexp-1.5 正则表达式库

    Jakarta Regexp 1.5 是一个专门为Java开发者设计的开源正则表达式库,它提供了强大的文本匹配和处理功能。这个库源自Apache软件基金会,是许多Java项目中广泛使用的正则表达式实现之一。在Java标准库中,虽然内置了`...

    正则验证大全

    在`jsRegExp正则分组的例子.rar`中,可能包含了如何使用分组和回溯进行复杂匹配的示例。分组可以捕获子匹配,并在替换或后向引用中使用。回溯是正则引擎在尝试匹配时的一种策略,当当前路径无法匹配时,会尝试回退...

    SQL 正则表达式及mybatis中使用正则表达式

    当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。 扩展正则表达式的一些字符是: “.”匹配任何单个的字符。 一个字符类“[…]”匹配在方括号内的任何字符。例如...

    evasnowind#ArchKnowledgeTree#mysql中判断字段是否包含数字或者是否为纯数字1

    使用regexp正则匹配纯数字例如:使用regexp正则匹配字段值不包含数字参考资料mysql 匹配字符串中是否包含数字使用MYSQL查询数据表中某个字段包含某

    正则 RegExp.md

    正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

    mysql> select "aXbc" REGEXP.txt

    以前我要查找数据都是使用like后来发现mysql中也有正则表达式了并且感觉性能要好于like,下面我来给大家分享一下mysql REGEXP正则表达式使用详解,希望此方法对大家有帮助。

    Oracle通过正则表达式分割字符串 REGEXP_SUBSTR的代码详解

    REGEXP_SUBSTR函数格式如下: function REGEXP_SUBSTR(string, pattern, position, occurrence, modifier) string :需要进行正则处理的字符串 pattern :进行匹配的正则表达式 position :起始位置,从第几个...

    正则表达式实例_RegExp

    在编程语言中,正则表达式通常被封装在RegExp对象或类似结构内,提供了一套丰富的功能,如匹配、查找、替换和分割等。以下是一些核心的正则表达式概念和操作: 1. **元字符**:元字符具有特殊含义,比如`.`表示任何...

    嵌入式数据库(MySQL)中数据模糊检索方法解析.pdf

    本文主要探讨了MySQL中的两种主要模糊查询方式:Like匹配和RegExp正则匹配,以及如何通过内置函数和全文索引来优化查询性能。 Like匹配是MySQL中最基础的模糊查询方式,它使用通配符来实现部分匹配。常见的通配符有...

Global site tag (gtag.js) - Google Analytics