*******第八天******
回顾正则:
1:操作字符串,规则
2:正则表达式:因为方便效率极高
弄一正则:new RegExp('规则','选项');
I:表示忽略大小写
m:表示多行模式
g:表示全局
/规则/选项:列如/\d/img
str.search(/\d/); //搜索
1:如果找到,返回什么第一个找到的位置
2:如果找不到,返回-1,
indexOf
str.match(/\d/); //匹配
1:如果匹配上,返回的是数组
2:否则,null
str.replace('str1','str2');
//只替换第一个,
如果不配合正则来使用,replace--废物
var regx = /\d/;
regx.test(str); //能匹配上,返回true,否则 返回false
特性:
懒:只找一次 /g
蠢:数字例子,把数字都切开了, +
贪:如果有匹配的,一直找下去[]:
1)表示或的意思[123] 1或2或3[abc12de]
2)也可表示范围[a-zA-Z0-9]
3)表示排除[]
修饰:行首使用^,行尾使用$
量词:
{}
{n} n个
{n,m} 最少n个,最多m个{n,}最少n个,最多不限
{0,1}最少0个,最多1个----- ? --可有可无
{1,} 最少1个,最多不限 ----- +
{0,} 最少0个,最多不限
. 点 所有的字符
转义:
\n 换行
\d 数字
\
\\ \
\w 字母,数字,下划线_
\d 数字
\s 空白
tab空格 换行
\W
\D
\S 相反的
或:|| 正则:里或要使用单个的竖杠 |
使用正则转换汉字:
unicode: 4e00 - 9fa5
\u4e00-\u9fa5
var regx = /[\u4e00-\u9fa5]+/g;
网址:
www.baidu.com
www.sina.com.cn
12306.cn
http://www.baidu.com
https://www.baidu.com
news.baidu.com
news.163.baidu.com
使用正则分段:
1》协议:(https?:\/\/)?
2》多级域名:([a-z0-9-]+\.)*
3》域名:[a-z0-9-]+
4》后缀:(\.[a-z]{1,20}){1,2}
想用正则去匹配字符串:
1)分段
2)把每一段用正则匹配
3)把分开的正则连起来
捕获分组:( )
非捕获分组:(?:)
贪婪:
量词:+ ? * {n} {n,m} {n,}
惰性:
量词 + ? +? ?? *? {n}? {n,m}? {n,}?
边界:使用\b来表示
用符串的形式来造正则时: b [ {用两个 \ 来转义
new RegExp('\b\[\{')
模块化:
传统方式下,引多个js文件:
1) 必须人工一个一个引用;
2)多个js文件之间,会有依赖
3)有可能产生变量冲突
解决办法---模块化
两个JS库: seaJs requireJs
*官网:
http://requirejs.org/
使用requireJs,可以解决的问题:
1)不用手动引js文件了
2)解决了多个js文件间的依赖问题
3)解决了变量冲突问题
4)异步加载,js,避免了在加载JS过程中,阻塞页面渲染一个JS文件就是一个模块。
1:如何定义模块:定义: define
2:如何使用模块:
require(['js/a','','']);
require(['js/vv1','js/vv2'],function(mod1,mod2){
alert(mod1);
alert(mod2);
});
// 回调函数中的
mod1,mod2,和咱们引入的模块是一一对应的关系。
在一个模块里引入其它模块:
1)define(['js/vvv1','js/vvv2'],function(m1,m2){
。。。。
}
2)define(function(require){
var m1 = require('js/vvv1');
var m2 = require('js/vvv2');
}