JavaScript之正则表达式和RegExp

正则表达式是由字符串所组成字符组合,这些字符组合形成的模式可以查找匹配字符串、替换字符串或者定位特定的子字符串。可以通过RegExp对象可以显示地创建正则表达式。如:var searchStr=new RegExp('+s’);//匹配字符串中一个或者多个连续出现的s。var searchStr=new RegExp('+s','i');也可以通过字面量RegExp创建正则表达式。如:var searchStr1=/+s/。

RegExp方法:test和exec

test方法将判断以参数传入的字符串是否与正则表达式相匹配。如:

var re=/JavaScript rules/;

var str="JavaScript rules";

if(re.test(str)) document.writeln(" Hello world");

正则表达式匹配过程是区分大小写的。如果希望不区分大小写进行匹配,那么可以在正则表达式后面的第二个斜杠后面添加字母i,例如:var re=/javascript rules/i;

  • i:强制匹配过程忽略大小写
  • g:全局匹配。指导模式匹配过程查找与模式匹配的所有模式,而忽略模式在该行的字符串中的位置。如果不是用全局标记g,那么只会替换或者返回第一个匹配项。
  • m:多行匹配。例如:^表示一行的开始,$表示一行的结束。

例子:在整个exec方法将根据特定模式/js*/在整个字符串中进行查找。在返回的结果数组中,第一个元素就是匹配模式的字符串,接着继续查找下一个匹配:

var re=new RegExp('js*','ig');

var str='cfdsjs.*JS($%^Js';

var resultArray=re.exec(str);

while(resultArray){

    document.writeln(resultArray[0]);

    document.writeln("Hello world"+re.lastIndex+'<br/>');

    resultArray=re.exec(str);

}

把RegExp中的lastIndex属性设置为在每一次连续调用中找到的上一个模式的位置,每次exec调用都会查找下一个模式。

exec方法将返回一个数组,但是数组元素并不是所有的匹配项,而是当前匹配项和所有带括号的子字符串。如果在整个字符串中使用圆括号匹配子字符串,那么子字符串将包含在最终数组中连续数组元素中,最终数组位于整个匹配字符串后面位于数组第0个位置。

正则表达式元字符

  • \s:表示空白字符
  • *:表示前面的字符出现0次或多次
  • +:表示加号前面的字符出现一次或多次
  • ?:表示前面的字符出现0次或一次
  • .:表示字符只出现一次
  • .*:贪婪匹配。
  • .*?:延迟匹配。(返回为空,0次)
  • \D:非数字([^0-9])
  • \d:只匹配数字 ([0-9])
  • ^n:匹配任何开头以n的字符串
  • n$:匹配任何结尾以n的字符串
  • ?=n:匹配任何其后紧接指定字符串n的字符串
  • ?!n:匹配任何其后没有紧接指定字符串n的字符串
  • \w:任何数字字母字符
  • \W:任何非数字字母字符
  • a|b:匹配字母a或字母b
  • s{2}:大括号表示前面的字符重复的次数
  • \0:查找NUL字符
  • \n:查找换行符
  • \r:查找回车符
  • \f:查找换页符
  • \t:查找制表符
  • \v:查找垂直制表符
  • \b:匹配单词边界
  • \xxx:查找八进制xxx规定的字符
  • \xdd:查找十六进制规dd定的字符
  • \uxxxx:查找以十六进制xxxx规定的Unicode内容

支持字符串对象match方法

找到一个或多个正则表达式的匹配

var resultArray=str.match(rgExp);

支持字符串对象replace方法

var resultArray=str.replace(rgExp,"$2-$1");//子字符串第一个和第二个替换,得到替换后的str

支持字符串对象search方法

检索与正则表达式相配的值

字符串对象split方法

把字符串分割为字符串数组

 $1--$9保存圆括号中的数值 

RegExp对象属性

global:是否具有标志g

ignoreCase:是否具有标志i

lastIndex:一个整数,标示开始下一次匹配的字符位置

multiline:RegExp对象是否具有标志m

source:正则表达式的源文本

RegExp对象方法

compile:编译正则表达式

exec:检索字符串中指定的值,返回找到的值,并确定其位置

test:检索字符串中指定的值,返回true或false

 

猜你喜欢

转载自blog.csdn.net/weixin_42210229/article/details/81141052