大家好,欢迎来到IT知识分享网。
一、什么是正则表达式(regular expression)
1) 正则表达式是一描述字符模式的对象; 2) 可以处理更复杂的字符串; 3) javaScript中的正则表达式使用RegExp对象表示; 4)正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的工具;
1.语法:var patt=new RegExp(pattem,modifiers) 动态创建表达式
Var patt=/patterm/modifiers;
2.参数:pattern:描述表达式模式
Modifiers:用于指定全局匹配、区分大小写的匹配和多行匹配;
3.常用修饰符:用于执行区分大小写和全局匹配
1)i 执行对大小写不敏感的匹配; 2)g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止); 3)m 执行多行匹配
4.方括号:用于查找某个范围内的字符
1)[abc]:查找方括号之间的字符; 2)[^abc]:查找任何不在方括号之间的字符; 3)[0-9]:查找任何从0至9的数字; 4)[a-z]:查找任何从小写a到小写z的字符; 5)[A-Z]:查找任何从大写A到大写Z的字符; 6)[A-z]:查找任何从大写A到小写z的字符; 7)[adgk]查找给定集合内的 任何字符; 8)[^adgk]:查找给定集合外的任何字符; 9)(red|blue|green):查找任何指定的选项;
5.元字符:(Metacharacter)是拥有特殊含义的字符;
1). :查找单个字符,除了换行和结束符; 2)\w:查找单词字符; 3)\W:查找非单词字符; 4)\d:查找数字; 5)\D:查找非数字字符; 6)\s:查找空白字符; 7)\S:查找非空白字符; 8)\b:匹配单词边界; 9)\B:匹配非单词边界; 10)\0:查找NUL字符; 11)\n:查找换行符; 12)\f:查找换页符; 13)\r:查找回车符; 14)\t:查找制表符; 15)\v:查找垂直制表符; 16)\xxx:查找以八进制数xxx规定的字符; 17)\xdd:查找以十六进制数dd规定的字符; 18)\uxxxx:查找以十六进制数xxxx规定的Unicode字符;
6.量词:
1)n+:匹配任何包含至少一个n的字符串; 2)n*:匹配任何包含零个或多个n的字符串; 3)n?:匹配任何包含零个或一个n的字符串; 4)n{x}:匹配包含X个n的序列的字符串; 5)n{X,Y}:匹配包含X或Y个n的序列的字符串; 6)n{X}:匹配包含至少X个n的; 7)n$:匹配任何结尾为n的字符串; 8)^n:匹配任何开头为n的字符串; 9)?=n:匹配任何其后紧接指定字符串n的字符串; 10)?!n:匹配任何其后没有紧接指定字符串n的字符串;
二、正则对象方法:
1.RegExp对象
1)compile(编译) 语法:ReExpObject.compile(regexp,modifier) 参数:regexp:正则表达式 modifier:模式修饰符; Compile:用于在脚本执行过程中编译正则表达式或改变和重新编译正则表达式
2)exec:在目标字符串中执行一次正则匹配操作,并将结果以数组的形式返回,每次执行 exec()函数都只查找最多一个匹配并返回 语法:RegExpObjec.exec(string) 参数:string指定的字符串;
注:~如果为正则表达式设置了全局标志(g),exec()函数仍然只返回最多一个匹配,不过我们再次调用该对象的exec()函数就可以查找并返回下一个匹配;
~如果为正则表达式设置了全局标识g,test函数仍然只查找最多一个匹配,不过我们再次调用该对象的test函数就可以查找下一个匹配;
~如果regExpObject带有全局标志g,test()函数不是从字符串的开头开始查找,而是从属性regExpObject.lastIndex所指定的索引处开始查找该属性值默认为0,所以第一次仍热按是从字符串的开头查找。当找到一个匹配是,test()函数会将regExpObject.lastIndex的值改为字符串中能够本次匹配内容的最后一个字符的下一个索引位置,当再次执行test()函数是,将会从该索引位置处开始查找,从而找到下一个匹配。
~当我们使用test()函数执行了一次匹配之后,如果想要重新使用test()函数从头开始查找,则需要手动将regExpObject.lastIndex的值重置为0,如果test()函数在也找不到可以匹配的文本时,该函数会自动把regExpObject.lastIndex属性重置为0
3)test(测试):检测字符串中是否存在正则表达式模式对应的匹配,返回值布尔型; 语法: regExpObject.test(str) 参数:string指定的字符串
注:每次执行test函数都只查找最多一个匹配,找到返回true,否则false
2.正则表达式string对象的方法:如果匹配成功,则search()返回正则表达式在字符串中首次匹配项的索引,否则,返回
1)search(搜索):如果匹配成功,则search()返回正则表达式在字符串中首次匹配项的索引,否则,返回-1 语法:str,search(regexp) 参数:regexp一个正则表达式对象,如果传入一个非正则表达式对象,则会使用new RexExp(obj)隐式地将其转换为正则表达式
注:~~想知道字符串中是否建瓯存在某个模式(pattem)时可使用search,类似于正则表达式的test方法
~~了解更多匹配信息是,可使用match(会更慢),该方法类似于正则表达式的exec方法
2)match:当字符串匹配到正则表达式(regular expression)时,match()方法会提取匹配项,如果找到返回匹配结果的数组,如果没有匹配项,则返回null 语法:str,match(regexp) 参数:regexp一个正则表达式对象,如果传入一个非正则表达式对象,则会隐式地使用new RegExp(obj)将其转换为正则表达式对象
3)replace(替换):replace()方法使用一个替换值(replacement)替换掉一个匹配模式(pattem)在原字符串中某些或所有的匹配项,并返回替换后的字符串。这个替换模式可以是字符串或者RegExp(正则表达式),替换值可以是一个字符串或者一个函数 语法:str.replace(regexp|substr,newSubStr|function) 参数:regexp,一个RegExp对象,该正则所匹配的内容会被第二个参数的返回值替换掉 Substr:一个要被newSubSTR替换的字符串 newSubStr:替换掉第一个参数在原字符串中的匹配部分,该字符串中可以内插一些特殊的变量名 function:一个用来创建新字符串的函数,该函数的返回值将替换掉第一个参数匹配到的结果注:~~该方法并不改变调用它的字符串本身,而只是返回替换后的字符串 ~~在进行全局的搜索替换时,第一个参数要么是包含g标志的正则表达式,要么是包含g标志的字符串;
4)split(分割):split()方法通过吧字符串分割成字符串来把一个String对象分割成一个字符串数组 语法:str.split([separator][,limit]) 参数:separator,指定用来分割字符串的字符,separator可以是一个字符串或正则表达式,如果忽略separator,则返回的数组包含一个由原字符串组成的元素,如果separator是一个空字符串,则str将会转换成一个由原字符串中字符组成的数组; Limit:一个整数,限定返回的分割片段数量,split方法仍然分割每一个匹配的sepparator,单数返回的数组只会截取最多limit个元素
注:~~当找到一个seperator时,sparator会从字符串中被移除,返回存进一个数组当中的字符串,如果忽略separator参数,则返回的数组包含一个元素,该元素是原字符串,如果separator是一个空字符串,则str将被转换为由字符串中字符组成的数组
~~如果separator是一个正则表达式,且包含捕获括号(capturing parentheses),则每次匹配到separator时,捕获括号匹配的结果将会插入到返回的数组中。
还有,既然学习了正则表达式,就千万不要忘记这一个用法:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/54896.html