正则表达式都是用来操作字符串的。
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)); //-13、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);
});