正则表达式详谈及实例

来源:互联网 发布:java soap 编辑:程序博客网 时间:2024/05/18 02:28

正则表达式都是用来操作字符串的。

g:全局匹配。i:不区分大小写。m:表示多行匹配

写法:

var re=/ /;斜杠后面可加上 三种字母:g、i、m。

var re=new RegExp();括号里面放两个参数,一个是斜杠加里面的匹配表达式,第二个是匹配方式,即g,i,m(可不写)。

正则的四种方法

1、test:字符串的判断(匹配成功返回真,失败返回假)

写法:re.test(str);

例如:var re=/ab/;

alert(re.test('abc'));  //true

alert(re.test('acb'));  //false

2、searth:字符串的搜索(匹配成功返回成功的位置,失败返回-1)

写法:str.searth(re);

例如:var str="abcdefghi";

var re1=/d/;

var re2=/p/;

alert(str.searth(re1));  //3

alert((str.searth(re2));  //-1

3、match:获取匹配的结果(匹配成功返回成功的数组,失败返回null)

写法:str.marth(re);

例如:var str="ab12cd3444efg66hi";

var re=/\d+/g;

alert((str.searth(re));  //[12,3444,66]

4、replace:替换所有匹配(匹配成功的字符被替换成新的字符)

写法:str.replace(re,‘’);第二个参数可以是字符串也可以是回调函数

回调函数中的第一个参数:匹配到的字符

第二个参数:匹配到的字符里面第一个括号里的字符

第三个参数:匹配到的字符里面第二个括号里的字符。

以此类推。。。

(例子会结合小括号一起解析)

小括号的作用:分组并且储存以备后用

例如:将字符串中的(-)替换成(.)。

var str='2017-03-10';

var re=/(\d+)(-)/g;

str.replace(re,function($0,$1,$2){

     $0=$1+'.';

retrun $0;

});

重复子项

\1:重复第一个子项。\n重复第n个子项(比较适用于要重复的字符为不定项的时候)

例如:

var str='a3ab22bcc';

var re=/([a-z])([0-9])\1/;

var re1=/([a-z])([0-9])\2/;

alert(str.replace(re,'A'));  //Ab22bcc

alert(str.replace(re1,'A'));  //a3aAbcc

例如:

中括号的作用:匹配括号里的任意字符,但括号整体代表一个字符。

例如:var re=/a[a-d]b/;

alert(re.test('acb'));  //true

alert(re.test('abcb'));  //false

常用转义字符

\d:数字字符。

\D:非数字字符。

\w任意字符(字符、数字、下划线)

\W 非字符数字下划线

\s :空格符

\S:非空格

\b:独立单词分界(起始、结尾、空格)

\B:非独立单词

量词

{m,n}出现m到n次

{m,}至少出现m次

{m}正好出现m次

+:{1,}至少出现0次

?:{0,1}出现1次或不出现

*:{0,}至少出现0次

^:出现在中括号里面则表达[非]的含义,出现在中括号外面,则表示以后面字符串作为开头的匹配。

$:放在正则的结尾表示以最后一个字符结尾的匹配

常用正则表达式

 re=/^[a-zA-Z\u4e00-\u9fa5]+$/;  // 验证姓名,汉字和字母
 re1=/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/;    // 验证密码,8-16位字母或数字,不能全为数字或字母
 re3= /^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$/;   // 验证邮箱
 re4=/^1[3|4|5|8][0-9]\d{4,8}$/;            // 验证手机号码

思考题及解析:

找出 str=”aassddffooohhgygjjooonbmcxooo“中个数最多的字符

var str=”aassddffooohhgygjjooonbmcxooo“;

var arr=str.split();

str=arr.sort().join();

var value='';

var index=0;

str.replace(re,function($0,$1){

if(index<$0.length){

index=$0.length;

value=$1;

}

alert(value+':'+index);

});


0 0