第六天
Js中的正则表达式:元字符
. 表示任意一个字符
\d [0-9]大小写,表示的正好相反
\w [a-z A-Z 0-9]
\s 所有的空字符串
| 或 通过()改变优先级,()还能提取组
限定符:
* 出现0次或多次
+ 出现最少一次
?
{n}出现n次{5,}最少出现5次{5,10}最少5次,最多10次
^非
^开始$结束,加上开始和结束,表示完全匹配;
Matchs提取
创建正则表达式(六位整数的变量)
验证是否是合法的变量:(返回值是bool类型)
E-mail的正则表达式:
Test相当于IsMatch
Exec相当于match,如果正则表达式中没有提取组,则返回的当前提取到的匹配字符串,如果正则表达式中有提取组信息,则返回一个数组,该数组中第一个元素时匹配
要想让exec()方法,提取所有的匹配字符,需要:
1.在创建正则表达式之后,加上一个g,表示全局模式;
2.反复调用exec()方法;
3.注意:如果不加g,就算是反复调用,结果也只是,第一个符合的字符;
var res = regN.exec(msg);
直接调用一次exec方法相当于c#中的Match()方法,只能提取字符串中第一个匹配的字符串
var regN = /\d{5}/g;
var res = regN.exec(msg);
while (res) {
alert(res);
res = regN.exec(msg);
}
如果是这个:
var regN = /(\d{2})(\d{3})/g;
结果是符合条件的字符,和字符的前两个,和字符的后三个,这三个字符组成了一个数组;
通过match方法提取的时候,加了g 的,则会将所有的匹配字符都提取出来,返回一个匹配数组;
加了分组的提取,又加上了g,不会出现,匹配字符的分组;只有所有匹配的字符组成的分组;(msg是要提取的字符串)不用循环就能提取
字符串的替换:
Replace()方法,在正则表达式中用普通的字符串也行,想要将所有的匹配字符都替换掉,则在正则表达式后面加上g;
替换其中的一部分,则还是使用$1、$2
去掉字符串两端的空格:(js中没有Trim()方法)
在写正则表达式的时候,不要想着,写一个全能的正则表达式,就写一个简单的,符合当前要求的,这样比较高效;
自己写一个trim方法:(这个扩展方法,不建议使用)
这个string不是我们自己定义的类型,所以不要在不是自己定义的类型中随便增加扩展方法;否则,一旦原来的类型string,在新版本中也增加了同名的方法,这个时候就会造成很大的麻烦;所以所不建议使用;
压缩文件:
Js库提供了
替换键
将tab键用回车替换
尽量不声明全局变量,就算要使用,也要将变量放到一个对象中;
通过对象与对象的属性来模拟命名空间的概念;
浏览器的不兼容:
Widow。Event
Ff中使用if中的语句,IE中使用else中的语句