我就翻书看到讲正则表达式的,,以前一直听说过,感觉很难也没去看,今天看到许多地方ajax验证一堆都提到,,就浅显的看看,了解的也不深,就知道基本的几个,在这里记录一下,以后再深入了解
先说一下用途
说白了就是查找验证匹配替换定位一堆对字符串的处理方式
怎么使
var a=new RegExp(‘s+’);
var a=/s+/;
s+就是一个最简单的正则表达式
就是搜索一个或多个字母“s”
就和string number一样regexp也是js的对象
所以也有方法可以调用
test()检测是否有匹配的字符串
exec()执行 以一个数组的形式返回第一个匹配的
var re =/js/;
var str="jsjsjsjsjs";
if(re.test(str)){
document.write("有");
}
有个需要注意的就是正则表达式区分大小写
所以你如果想不区分大小写可以这样
var re=/javascript/i;//就是在/后面加个i
var re=new RegExp("javascript","i")
除了i 还有g(全局匹配),m(多行匹配)^(一行开始)&(一行结束)
时间紧我就不把js全部代码全血出来了
举几个简单例子
还是写一下吧
function(){
var re=new RegExp('js*','ig');
//匹配一个j与多个s组合 全局不区分大小
var str="djsklasjs jsss jsiiii";
var resultarray=re.exec(str);
while(resultarray){
//while用来判断正则表达式是否执行完成 完成返回一个空
document.write(resultarray[0]);
//显示匹配的部分
document.write(re.lastIndex+"
")
//正则表达式中lastIndex指向匹配对象的位置
}
结果
js 1
js 7
jsss 10
js 15
var re=/(ds)+(j+s)/ig
//匹配一个以上的ds(不能分开)同时紧邻一个以上j和一个s
//dsdsjs可以
//dsdsdsjjs可以
//js不可以因为(ds)后面是“+”如果是“*”就可以为零个ds //js这种情况就可以匹配
###正则表达式的转义字符
就是反斜杠\\\\\\
\+
\*
\s 表示空格,,,,,常用
>var re=/\s\*/g;
var str="wo *shi *guozhipeng";
var resultstring=str.replace(re,-);
alert(resultstring);
就会变成wo-shi-guozhipeng
这里我在说一下就是 + * ? . 这几个符号
+表示匹配一个以上
*表示0个以上
?表示0或1次
. 表示就一次同时 "."可以用来表示所有的字符
var str=""guozhipeng"hehehehehhehehe";
如果用(.*)匹配就是整个字符串"guozhipeng"hehehehehhehehe
用(.*?)就会变成“guozhipeng”因为?匹配表示0或1,而我的双引号已经出现两次了,,,所以就输出“guizhipeng”
在说几个我看到的几个常用的正则表达式
\d 一个或多个数字等同于[0~9]
\D 一个或多个非数字=======等同于[^0~9]
这里“^”表示反
[A~Za~z]所有字母
/^the/这里的^表示开头 使用这个就表示用the开头的字符串
/end$/这里的$表示结尾 表示以end看、结尾的字符串
使用var str=“heheheh end”匹配
var str=“heheh end hehe”不匹配
然后正则表达式中()小括号的使用也很常见,,,使用()后()内的内容会被保存到数组里
str=“the is fun 0 ni”
在/(^\D*)[0~9]/ 匹配后会出现两个记录
一个是the is fun 0
还有一个就是小括号里的the is fun
同时$1这时就指代小括号里匹配的第一个元素 如果有其他的匹配项会一次定义为$1 $2 $3
(美元符号显示不出来1,2,3前面有一个¥类似的美元符号)
a|b|c 还是或的意思
s{2}就表示两个s字母