手机版

javascript正则表达式和字符串正则表达式和字符串(一)

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

正则表达式是javascript的一个非常重要且常用的函数,在jquery这样的大型框架中经常用到。最近抽时间学习了相关知识,录下来和有需要的朋友分享。

思维导图

这里写图片描述

如何创建正则表达式。

您可以通过两种方式创建正则表达式,如下所示:

通过/./(注:/./两边没有单引号或双引号)使用RegExp构造方法创建正则表达式。为了更好地描述模式,正则表达式提供了三个标识符,即:g/i/m i/m。

G:全局匹配:在整个字符串中匹配,而不是在第一次匹配后停止。i:忽略大小写匹配。m:在多行字符串的每行开头应用特殊字符(分别为$和$)。有关详细信息,请参考以下代码以获得更深入的理解:

var regx=new RegExp('are ',' g ');var regx 1=/are/g;//常用创建方法RegExp实例的主要属性。

根据正则表达式的构造函数,我们大概可以猜出正则表达式的主要属性。只需了解实例属性。但是,有一点需要注意:这些实例属性不能通过在中遍历来获得。

请参考以下代码以进一步了解:

var regx 1=/are/g;//通用创建方法console . log(' source : ' regx . source ' global : ' regx . global ' ignore case 3360 ' regx . ignore case ' multiline : ' regx . multiline);//source : are global : true忽略大小写: false multiline : false for(regx中的var p){//不会进入for循环if(regx . hasown property(p)){ console . log(regx[p]);}}RegExp实例测试的主方法。

根据这种非常简单且只有一个参数的方法,它通常用于验证输入参数是否与正则表达式模式匹配。如果匹配,则返回true,否则返回false。为了进一步理解,您可以参考以下代码:

var regx 1=/are/g;var res=regx.test('你是个好孩子!');console . log(RES);//true var res1=regx . test(‘我是个好孩子!’);console . log(res1);//false main方法//falseRegExp实例-exec。

这种方法是很常见的方法,需要很好的理解。它只接收一个参数,即要匹配的字符串,但返回值是数组arr,存储第一个匹配项的相关信息,包括:

Input:要匹配的字符串,exec方法的输入值。

索引:字符串中匹配的位置。

Arr[0]:模式匹配字符串。

Arr[1]…arr[n]:第n个捕获组字符串。

使用此方法时,应注意,如果正则表达式中未指定全局标志g,则每次执行时总是返回第一个匹配项。如果设置了全局标志g,则每次调用exec时,将继续在字符串中搜索新的匹配项。

请参考以下代码以进一步了解:

var regx=/fn :(\ w)\ s ln :(\ w)\ s/g;var s=“你的fn:xiaoxin ln:tang对吗?”;var result=regx.execconsole . log(result . input);//你的fn:xiaoxin ln:tang对吗?console . log(result . index);//5 console.log(结果[0]);//fn : xiaoxin ln : Tang console . log(结果[1]);//肖鑫控制台. log(结果[2]);//tang console.log(结果[3]);//undefined因为只有2个捕获组,所以打印undefinedRegExp构造函数属性。

函数属性可以通过参考其他编程语言(如java)中类的静态属性来理解,这些静态属性是所有RegExp实例共享的,也就是说,所有RegExp实例都可以访问和修改这些属性,当一个实例执行test或exec方法时,这些属性的值也会发生变化。

我们可以根据自己的理解记住这些属性:

输入:需要用于模式匹配的字符串,以及测试或执行方法的输入参数。参数别名:$-lastMatch:最新匹配。参数别名:$leftContext :匹配项左侧的字符串。参数别名:$`rightContext :匹配项右侧的字符串。参数别名:$'1,2,$3….捕获与组对应的字符串。

当然,这些值可以从RegExp实例执行的exec返回的结果中计算出来,那么为什么要在RegExp构造函数中设置这些属性呢?*

请参考以下代码以进一步了解:

var regx=/fn :(\ w)\ s ln :(\ w)\ s/g;var s=“你的fn:xiaoxin ln:tang对吗?”;var result=regx.execconsole . log(RegExp . input);//你的fn:xiaoxin ln:tang对吗?console . log(RegExp . LastMatch);//fn : xiaoxin ln : Tang console . log(RegExp . LeftContext);//your console . log(RegExp . right context);//对吗?console.log(RegExp。$1);//xixinconsole . log(RegExp。$2);//tangregeexp-元字符。

与其他语言中的正则表达式类似,js正则表达式中也有一些元字符,它们有特殊的用途和含义。因此,在使用这些字符的过程中,有必要通过前缀“\”来转义这些字符。JS正则表达式的元字符有:

([ { \ ^ $ | ) ?* .] }

RegExp-贪婪匹配和懒惰匹配。

贪婪匹配是指在正则表达式匹配过程中,匹配长度越长越好。在JS正则表达式中,惰性限定词是'?添加'?到模式。就是懒得搭配。有关详细信息,请参见以下代码:

var s='我是个好孩子,你也是个好孩子!';var regx=/good。*男孩/克;//贪婪地匹配console . log(regx . exec(s)[0]);//好孩子,你也是个好boy var regx 1=/好。*?男孩/克;//lazy match console . log(regx 1 . exec(s)[0]);//好孩子,以上内容是边肖分享的javascript正则表达式和字符串RegExp和String(一),下一篇文章将分享javascript正则表达式和字符串RegExp和String(二)希望大家喜欢。

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

相关文章推荐