javascript正则表达式定义的方法是什么

javascript正则表达式的2种定义方法:一种是直接调用RegExp(),第二种是直接用字面量来定义,即var re = /正则规则/;

js正则表达式的2种定义方法本质都是调用RegExp()方法

在调用同一段正则代码的时候,ECMAScript3和ECMAScript5中表现完全不一样

function reg(){

var re = /\sjavascript/;

return re;

}

分别在ECMAScript3和ECMAScript5中调用reg()方法多次

在ECMAScript3中,调用的是同一个RegExp对象,在ECMAScript5中,调用的是不同的RegExp对象 因为在EXCMAScript5中每执行一次,就生成一个新的RegExp对象

所以在ECMAScript3中会造成程序的隐患,因为只要在一个地方对这个对象进行修改的话,所有调用到这个对象的地方都会变化。

1.直接量字符

在正则中一般都会直接匹配字符,如

/javascript/

会直接匹配字符javascript

还支持非字母的字符匹配,如:

\o NUL字符(\u0000)

\t 制表符(\u0009)

\n 换行符(\u000A)

\v 垂直制表符(\u000B)

\f 换页符(\u000C)

\r 回车符(\u000D)

\xnn  由十六进制数nn指定的拉丁字符,例如,\x0A等价于\n

\uxxxx 由十六进制数xxxx指定的Unicode字符,例如\u0009等价于\t

\cX 控制字符^X,例如,\cJ等价于换行符\n

在js正则表达式中,还有一些有特殊含义的标点符号,他们需要’\’来转义

^$.*+?=!:|\/()[]{}

2.字符类

[...]               方括号内的任意字符

[^...] 不在方括号内的任意字符

.   任意字符

\w 任何ASCII字符组成的单词,等价于[a-zA-Z0-9]

\W   任何不适ASCII字符组成的单词,等价于[^a-zA-Z0-9]

\s 任何Unicode空白符

\S 任何非Unicode空白符的字符,注意\w和\S不一样

\d 任何ASCII数值,等价于[0-9]

\D 除了ASCII数字之外的任何字符,等价于[^0-9]

[\b] 退格直接量(特例)

3.重复(次数)

? 0或1次

+ 1次或多次

* 任意次

{n}        n次

{m,n}     最少m次,最多n次

{n,}       n次或n次以上

正则默认是贪婪匹配的

如[a+b+]      如果要匹配aaabb,它不会匹配ab和aab等,只会匹配aaabb

[a+?b+?]       这个会匹配aaab   为什么会产生这个区别呢?

答:+?是让正则非贪婪匹配,那么b这里只会匹配一个b,那为什么a会匹配3个呢?这是因为正则表达式的模式匹配总是会寻找字符串中第一个可能匹配的位置。

4.选项|分组|引用

用于分隔可供选择的字符,如[ab|cd],他既可以匹配ab也可以匹配cd,注意:选择项的尝试匹配次序是左→右,因此[a|ab],当a匹配通过了之后,就不匹配ab了,就算ab是更好的匹配()

1.单独的项当成子表达式 /java(script)?/     可以匹配javascript和java   即圆括号部分形成子的表达式,可以对子表达式执行| * ?等操作

2.完整的模式中定义子模式   后面的可以引用前面圆括号起来的表达式   /([’"])[a-z]\1/     \1引用的是第一个圆括号里的表达式,因此引用了[’"]

3.后部引用前面的子表达式  注意: /[’"][a-z][’"]/这个正则的意思是     单引号或双引号加上一个小写字母加上一个单引号或者双引号,前后的单双引号不是匹配的

如果你要匹配可以这么写[([’"])[a-z]\1]

\加数字     可以引用前面圆括号中的表达式

5.制定匹配位置(锚点)

^ 匹配字符串的开头,在多行检索中,匹配一行的开头

$ 匹配字符串的结尾,在多行检索中,匹配一行的结尾

\b  匹配一个单词的边界,简言之,就是位于字符\w和\W之间的位置,或位于字符\w和字符串的开头或者结尾之间的位置

\B  匹配非单词边界的位置

(?=p)   零宽正向先行断言,要求接下来的字符都与p匹配,但不能包括匹配p的那些字符

(?!p) 零宽负向先行断言,要求接下来的字符不与p匹配

6.修饰符

写在正则表达式字面量//右侧的

i 执行不区分大小写的匹配

g  执行一个全局匹配,简言之,即找到所有的匹配,而不是在找到第一个之后就停止

m 多行匹配模式,^匹配一行的开头和字符串的开头,$匹配行的结束和字符串的结束    /java$/m   可以匹配  java\nfunc

注意:当javascript正则表达式是全局的时候,每次exec() 和 test()的时候都会把当前设置的lastIndex设为当前的位置,再次执行的时候就会从lastIndex的位置开始执行,因此最好每次执行的时候lastIndex设置为0。

时间: 2024-10-05 06:18:11

javascript正则表达式定义的方法是什么的相关文章

javascript正则表达式定义(语法)

javascript正则表达式定义(语法) 正则表达式的2种定义方法:一种是直接调用RegExp(),第二种是直接用字面量来定义,即var re = /正则规则/; 2种定义方法本质都是调用RegExp()方法 在调用同一段正则代码的时候,ECMAScript3和ECMAScript5中表现完全不一样 ? function reg(){ var re = /\sjavascript/; return re; } 分别在ECMAScript3和ECMAScript5中调用reg()方法多次 在EC

JavaScript正则表达式-定义

JavaScript定义正则表达式的方式有两种: 1.通过RegExp()构造函数创建RegExp对象来定义正则表达式. 2.通过字面语法直接定义正则表达式. 通过RegExp()构造函数创建RegExp对象来定义正则表达式 var reg_pattern = new RegExt("a\d"); 通过字面语法直接定义正则表达式 var reg_pattern = /a\d/;//模式匹配的字符串是:字母a后跟随一个任意的数字 //第2个斜线之后可以跟随后缀选项(标记)用以说明模式匹配

JavaScript常用定义和方法

1.字符串一些常用方法,注意,调用这些方法本身不会改变原有字符串的内容,而是返回一个新字符串.toUpperCase()把一个字符串全部变为大写: var s = 'Hello'; s.toUpperCase(); // 返回'HELLO' toLowerCase()把一个字符串全部变为小写: var s = 'Hello'; var lower = s.toLowerCase(); // 返回'hello'并赋值给变量lower lower; // 'hello' indexOf()会搜索指定

JavaScript之基础-10 JavaScript 正则表达式(概述、定义正则、RegExp对象、用于模式匹配的String方法)

一.JavaScript 正则表达式概述 正则表达式概述 - 正则表达式(Regular Expression): 由一些普通字符和特殊字符组成的,用以描述一种特定的字符规则的表达式 - 正则表达式常用于在一段文本中搜索.匹配或替换特定形式的文本.如:词语出现频率统计.验证字符串是否符合邮件格式.屏蔽一篇帖子中的限制性词语等 正则表达式初体验 - 验证用户输入的手机格式是否合法 二.JavaScript 定义正则表达式 普通字符 - 所有的单个大小写字母.数字都是一个正则表达式,用以匹配单个字符

javascript如何定义正则表达式

javascript正则表达式的2种定义方法:一种是直接调用RegExp(),第二种是直接用字面量来定义,即var re = /正则规则/; js正则表达式的2种定义方法本质都是调用RegExp()方法 在调用同一段正则代码的时候,ECMAScript3和ECMAScript5中表现完全不一样 function reg(){ var re = /\sjavascript/; return re; } 分别在ECMAScript3和ECMAScript5中调用reg()方法多次 在ECMAScri

javascript中定义声明函数的四种方法

javascript中定义声明函数的四种方法 :http://blog.163.com/zzf_fly/blog/static/209589158201286104927248/ 方法一:function functionName([parameters]){functionBody}; 方法二:将一个未命名的函数function赋给一个指定变量(var):var add=function(a, b){} 方法三:使用new运算符声明函数varName=new Function([param1N

javascript正则表达式对象方法 compile() exec() test()的比较

compile() 方法用于在脚本执行过程中编译正则表达式,也可用于改变和重新编译正则表达式. exec() 方法用于检索字符串中的正则表达式的匹配.找到则返回一个数组,未找到则返回null. test() 方法用于检测一个字符串是否匹配某个模式.返回true 或 false. 语法: compile(): RegExpObject.compile(regexp,modifier) regexp 正则表达式. modifier 规定匹配的类型."g" 用于全局匹配,"i&qu

JavaScript 函数定义方法

JavaScript 函数定义方法. 函数声明 在之前的教程中,你已经了解了函数声明的语法 : function functionName(parameters) { 执行的代码 } 函数声明后不会立即执行,会在我们需要的时候调用到. function myFunction(a, b) { return a * b; } 分号是用来分隔可执行JavaScript语句. 由于函数声明不是一个可执行语句,所以不以分号结束. 函数表达式 JavaScript 函数可以通过一个表达式定义. 函数表达式可

JavaScript正则表达式-相关的String对象方法

JavaScript正则表达式相关的String对象方法有三个: 1.match(). 2.replace(). 3.search(). match() match(regExp); 使用指定的正则表达式来搜索字符串. 如果找到匹配字符串返回一个数组,否则返回null. 返回的数组包含两个属性:index和input. index是匹配字符串在原字符串中的位置. input属性是对原字符串的引用. var reg_pattern = /a\d/; var str = "apple,a2,b3,a