JavaScript之RegExp(正则表达式)

1.正则表达式的创建
1.1构造函数式
var reg=new RegExp("规则","标志");
var reg=new RegExp("\d\d","i");
1.2字面量
var reg=/规则/标志;
var reg=/\d\d/i;

2标志 i:不区分大小写  g:全局匹配  m:多行

3.规则
\转义字符:可以将下一个字符标记为一个特殊字符或愿义字符或一个向后引用或一个
八进制转义字符。例如:"\n"表示换行
[]字符合集:匹配其中的任意一个字符
[^]非字符合集:不匹配其中的任意一个字符 例如:[^123] 不匹配123
()匹配子项:括号内为一个子表达式,子项可以获取供以后使用
|表示或者(x|y)相当于[xy]
{n}n是一个非负整数,表示前面的字符出现的n次
{n,}n是一个非负整数,表示前面的字符至少出现的n次
{n,m}n m是一个非负整数且n<m,表示前面的字符出现的n到m次
^从开始位置匹配,如果设置了m标志,^也匹配"\n"或者"\r"之后的位置
$从结束位置匹配,如果设置了m标志,^也匹配"\n"或者"\r"之后的位置
+至少出现1次 与{1,}意思一致
?出现0或者1次 与{0,1}意思一致
*出现任意次,至少出现0次 与{0,}意思一致

\s匹配空格
\S匹配非空格
\w匹配包括下划线的任意单字符
\W匹配非单字符
\d匹配一个数字字符
\D匹配一个非数字字符
\b匹配一个单词边界
\B匹配一个非单词边界
.匹配除去"\n"以外的任一个字符

4.正则中常用的方法
4.1 test()

       test(str)对指定的字符串执行一个正则表达式搜索,返回一个布尔值,如果匹配成功返回true,否则返回false。
这种用法经常出现在验证用户输入的情况下
var text="000-00-000";
var reg=/\d{3}-\d{2}-\d{3}/
if(reg.test(text)) console.log("匹配成功");
else  console.log("匹配失败");
4.2exec(str);
       exec 查找并返回当前的匹配结果,并返回一个长度为1的数组。如果没有找到,则返回null
返回的数组还有三个属性:
index 当前匹配项的位置;
lastIndex 当前匹配项结束的位置(index + 当前匹配项的长度);
input 查找的字符串;
exec 方法受参数 g 的影响。若指定了 g,则下次调用 exec 时,会从上个匹配的 lastIndex 开始查找。

var str = "1a1b1c";
var reg = new RegExp("1.", "g");
var arr = reg.exec(str);
var arr2 = reg.exec(str);
var arr3 = reg.exec(str);
var arr4 = reg.exec(str);
console.log(arr);
console.log(arr2);
console.log(arr3);
console.log(arr4);

4.3search( )
实际上这是字符串中的方法,但是该方法需要传入一个正则对象
str.search(RegExp);
该方法用于字符串的搜索,会返回匹配项出现的位置

var reg=/d/;
var str="abcdef";
console.log( str.search(reg) ); //3
var reg=/bcde/;
console.log( str.search(reg) ); //1

4.4match( )
此方法如同search也是字符串中的一个方法,需要传入一个正则对象
str.match(RegExp);
该方法作用如同exec,用于字符串匹配,并返回匹配成功的数组,但是该方法如果指定了参数 g,那么match 一次返回所有的结果。

var str="a0b123c453de5fg7897h";
var reg=/\d/;
console.log( str.match(reg) ); //0
var reg=/\d/g;
console.log( str.match(reg) ); //0,1,2,3,4,5,3,5,7,8,9,7

4.5replace( )
用于字符串替换,返回替换后的字符串,这个方法是字符串的方法,只在字符串中使用的话只能进行单个字符的替换,但是当我们加上正则后,这个方法就有了很大的变化。

strObj.replace(RegExp,replacement);
replacement:规定替换文本或生成替换文本的函数(函数传入的参数是匹配到的子字符串,函数的返回值是替换后的子字符串)。

var str="Hello World";
var reg=/World/;
str=str.replace(reg,”Javascript”);
document.write(str+""); //Hello Javascript

var name = "aaa bbb ccc";
var reg=/\b\w+\b/g;
var uw=name.replace(reg, function(word){
    return word.substring(0,1).toUpperCase()+word.substring(1);}
);
document.write(uw+"");//Aaa Bbb Ccc

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript

正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg

猜你喜欢

转载自blog.csdn.net/wsymcxy/article/details/81369168