1.正则表达式
- 定义:定义字符中字符出现规则的表达式
- 何时使用:切割、替换、 *验证
- 语法:/正则表达式/ 1.最简单的正则:关键字原文:"no" 正则语法:/no/ig
- i:忽略大小写
- g:全部
2.备选字符集:一个备选字符集:规定了一位字符可用的备选字符列表 语法:/[备选字符列表]/ 强调:
- 一个中括号只能匹配一个字符
- 正则默认只要满足后,就不再管理后续操作,后续用户可以随意输入
解决:只要是做验证 必须/^[备选字符集]$/
前加^后加$从头到尾完全匹配
特殊: 1.备选字符集中,Unicode号是连续的那么中间部分可以用—
- 例如:一位数字:[0-9] 一位汉字[\u4e00-\u9fa5] 2.除了xxx外,其他都可以:[^xxx] 3.预定义字符集:
- 一位数字:\d ——>[0-9]
- 一位数字、字母、下划线:\w ——>[0-9A-Za-z_ ]
- 一位空白字符:\s —>空格、制表符\t、换行符\n
- 一位除了换行外的任意字符: . 4.量词:规定了一个字符集出现的次数
- 有明确的数量:
- 字符集{n,m}:前面相邻的字符集最少出现n次,最多出现m次
- 字符集{n,}:前面相邻的字符集,最少出现n次,最多不限
- 字符集{n}:前面相邻的字符集,必须出现n次
- 没有明确数量: 字符集 ?:前面相邻的字符集,可有可无,最多一次 *:...............可有可无,多了不限 +:...............至少一次,多了不限
5、选择和分组
-
选择:规则1|规则2 - 可以再多个规则中选择满足的规则进行执行 -
分组:添加子规则:(规则1|规则2)
2、字符串中支持正则表达式的API:分割、替换:
-
分割字符串: var arr=str.split(reg);
-
*****替换字符串:
-
- 基本替换法: var newStr=str.replace(reg,"新内容"); 特殊:1、默认只会替换第一个关键字,想要替换所有记得加上后缀g 2、替换的内容只能是一个固定的新内容
-
- 高级替换法
var newStr=str.replace(/[我卧窝][槽操艹草去]+/g,function(a,b,c){
console.log(a);//正则匹配到的关键字
console.log(b);//正则匹配到的关键字的下标
console.log(c);//原文本身
return a.length==2?"**":"***";
});
-
- 格式化:如果替换API使用正则时,并且里面带有分组,那么你会得到更多的形参
var newStr=str.replace(reg,function(a,b,c...){
console.log(a);//正则匹配到的关键字
console.log(b);//第一个分组获取到的内容
console.log(c);//第二个分组获取到的内容
return "格式化的东西"
});
- 正则对象: 创建正则对象:2个
- 直接量:var reg=/正则表达式/后缀
- 构造函数:var reg=new RegExp("正则表达式","后缀") 方法:var bool=reg.test(user);
- 布尔值如果是true,说明用户输入的符合我们的要求,false说明不通过
1、Math:专门提供了数学计算的API
- 唯一的属性:Math.PI API:
- 取整:3种
- 上取整:只要超过一点点,就会取下一个整数,此方法小数位数不能超过15位否则会失效:Math.ceil(num);
- 下取整:不管超过多少,都会省略掉小数部分,此方法小数位数不能超过15位否则会失效:Math.floor(num);
- 四舍五入取整:Math.round(num);
- **parseFloat(num.toFixed(d));//既有四舍五入功能,又具有保留自定义小数位数的操作,结果是一个字符串
笔试题:封装一个函数,实现可以自定义保留小数位数并且四舍五入的功能,但是不允许使用toFixed?
function round(num,d){
num*=Math.pow(10,d);
num=Math.round(num)
num/=Math.pow(10,d);
return num.toString();
}
- 乘方和开方
- *乘方:Math.pow(底数,幂); - 简化连续的乘法
- 开方:Math.sqrt(num); - 只能开平方
- 最大值和最小值
- 语法:Math.max/min(a,b,c,d,e,f....);
- 绝对值:将负数转为整数
- Math.abs(num);
- *随机数:只要页面上具有随机的功能,底层一定用到了随机数
- Math.random() 已经是一个随机数了,随机的小数0-1,有可能取到0,但是绝对不可能取到1 - 意味 着能取到最小值,但是取不到最大值
- 公式:parseInt(Math.random()*(max-min+1)+min);
2、Date:封装了一个日期对象,提供了对日期事件进行操作的API
何时使用:网页上跟事件日期相关的
-
1、创建日期对象:4种
1、*创建当前时间: var now=new Date(); 2、*创建自定义时间: var birth=new Date("yyyy/MM/dd hh:mm:ss"); 3、创建自定义时间: var birth=new Date(yyyy,MM,dd,hh,mm,ss); 缺点:月份需要修正:计算机中月份是从0开始到11的 4、复制一个日期对象: 为什么:日期对象的API都是直接修改原日期对象,使用API后,无法同时保存住旧的日期对象 何时使用:在调用日期对象的API之前都要先复制,在使用API 语法:var end=new Date(now); 5、var xxx=new Date(毫秒数); 计算器其实保存的就是从1970年1月1日至今的毫秒数 -
2.操作:
1、两个日期对象之间可以相减,得到毫秒差,换算出你想要的任何一部分,看出细节:其实日期对象保存的就是一个毫秒数 2、API: 分量:时间单位 FullYear Month Date Day Hours Minutes Seconds 1、每一个分量都有一对儿方法:getXXX()/setXXX() 特殊:1、取值范围: 年:当前年份 月:0-11 日:1-31 时:0-23 分:0-59 星期:0-6,0代表星期天 2、星期只有get,没有set 2、固定套路:对着某个日期直接做加减 date.setXXX(date.getXXX()+3) 3、格式化为字符串: 国际化日期格式化为本地化日期:date.toLocaleString(); 1、具有浏览器的兼容性问题 2、则不可以再使用日期对象的API,也不会再带有进制操作了 好处:转为了字符串可用字符串的API 解决:自定义format格式化