手机版

JavaScript正则表达式的基本语法(推荐)

时间:2021-10-29 来源:互联网 编辑:宝哥软件园 浏览:

相关阅读:

js正则表达式的基本语法(本质)

正则表达式语法

正则表达式是由普通字符(如字符A到Z)和特殊字符(称为元字符)组成的文本模式。该模式描述了在搜索文本正文时要匹配的一个或多个字符串。作为模板,正则表达式将字符模式与搜索到的字符串进行匹配。

定义

定义JavaScript正则表达式有两种方法。定义一个类似于%XXX%的字符串匹配。

1.构造函数。

复制代码如下:

var reg=新RegExp('%[^%] % ',' g ');

2.文字量

复制代码如下:

var reg=/%[^%]%/g;

g:全局,全文搜索,默认搜索到第一个结果,然后停止I:在gore的情况下,忽略大小写,默认区分大小写m:多行,多行搜索(更改$和$,使它们匹配任何一行的头和尾,而不仅仅是整个字符串的开头和结尾)。

元字符

正则表达式令人望而生畏的一个重要原因是转义字符太多,组合太多,而正则表达式的元字符(正则表达式中具有特殊含义的特殊字符,可用于指定其前导字符)却不多。

元字符:([{\ $ |)?* .

不是每个元字符都有其特定的含义,但是元字符在不同的组合中有不同的含义。请看看类别。

性格类型

一般来说,正则表达式的一个字符(一个转义字符)对应字符串的一个字符,表达式ab\t的含义是:

但是,我们可以使用元字符[]来构造一个简单的类。所谓类,是指符合一定特征的对象,是一般的引用,而不是特定的字符。我们可以使用表达式[abc]将字符A或B或C分类为一个类,表达式可以匹配这样的字符。

元字符[]的组合可以创建一个类,我们也可以使用元字符创建一个反向类/负类。反向类表示不属于XXX类的内容,表达式【ABC】表示不是字符A或B或c的内容。

范围类

根据上面的描述,如果我们要匹配单个数字,那么表达式是这样的。

[0123456789]

如果是一封信,那么。好麻烦,正则表达式也提供范围类,我们可以用x-y连接两个字符来表示从x到y的任意字符,这是一个封闭的区间,也就是说它包含x和ybenshen,所以匹配小写字母非常简单。

[a-z]

如果你想匹配所有的字母呢?可以写在由[]组成的类中,我们也可以这样写[a-zA-Z]。

预定义的类

刚才,我们创建了几个类来表示数字、字母等。但这样写很麻烦。正则表达式为我们提供了几个常用的预定义类来匹配常见字符。

有了这些预定义的类,编写一些规则就非常方便了。例如,如果我们想匹配一串任意字符的ab数字,我们可以写AB \ D .

领土边界

正则表达式还提供了几种常用的边界匹配字符。

看一个不负责任的邮箱常规匹配(不要模仿,括号后会提到)\[emailprotected]\w \。(com)$。

量词

我们之前介绍的方法都是一一匹配的。如果我们要匹配一个有20个连续数字的字符串,需要这样写吗?

\ d \ d \ d \ d \ d.

为此正则表达式引入了一些量词。

看一些使用量词的例子。

\w \b拜伦匹配单词边界拜伦。

复制代码如下:

(/\w \b拜伦/)。测试(“嗨拜伦”);//true(/\w \b拜伦/)。测试(《欢迎拜伦》);//true(/\w \b拜伦/)。测试(' HiByron ');//false

\d \。\d{1,3}匹配一个有三个小数位的数字。

贪婪模式和非贪婪模式。

看完上面介绍的量词,或许会让有思维的同学想到一些关于搭配原则的问题。例如,如果量词{3,5}在一个句子中出现十次,它会一次匹配三个还是五个?反正3、4、5都满足3 ~ 5的条件。默认情况下,尽可能匹配量词,这通常被称为贪婪模式。

复制代码如下:

'123456789'.匹配(/\d{3,5 }/g);//['12345', '6789']

既然有贪婪模式,那么肯定会有非贪婪模式,这样正则表达式就可以尽量少匹配,也就是说一旦匹配成功就不会再试了。方法很简单。添加?就这么干吧

复制代码如下:

'123456789'.匹配(/\d{3,5}?/g);//['123', '456', '789']

有时我们在使用量词时希望匹配多个字符,而不是像上面的例子那样只匹配一个字符。例如,我们想要匹配一个在拜伦中出现20次的字符串。如果我们写拜伦{20},它在拜伦n中匹配了20次,我们怎么能把拜伦作为一个整体呢?使用()可以实现第二个目标,这叫做分组。

(拜伦){20}

如果你想和拜伦或卡斯帕比赛20次呢?您可以使用字符|来实现或的效果。

(拜伦|卡斯珀){20}

我们在图片中看到了第一名。这是什么?使用分组的正则表达式还会将匹配的项放入分组中,默认情况下是按照数字分布的。不同的组可以根据编号获取抓取到的分组内容,这在一些想要具体操作哪些匹配项的功能中非常有用。

(拜伦)。(好的)

如果有嵌套组,则最先出现外部组的编号。

((^|%)[^\t]*)

有时候我们不想捕捉某些群体,我们只需要添加?3360就可以了,但是不代表这个组的内容不属于正则表达式,只是不会编号而已。

(?拜伦)。(好的)

其实分组也可以用C#等语言命名,但是JavaScript不支持。

预期表达

说的有些抽象,看一个好的例子(?=拜伦)

复制代码如下:

(/好(?=拜伦)/)。exec(' goodbyr 123 ');//['好'](/好(?=拜伦)/)。exec(' good casp 123 ');//null(/bad(?=拜伦)/)。exec(' good casp 123 ');//null

从上面的例子可以看出,exp1(?=exp2)表达式将与exp1表达式匹配,但只有其后面的内容为exp2,即两个条件,exp1(?Exp2)也类似。

好(?拜伦)

复制代码如下:

(/好(?拜伦)/)。exec(' goodbyr 123 ');//null(/good(?拜伦)/)。exec(' good casp 123 ');//['好'](/坏(?拜伦)/)。exec(' good casp 123 ');//null

以上是边肖介绍的JavaScript正则表达式的基本语法(推荐)知识。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!

版权声明:JavaScript正则表达式的基本语法(推荐)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。