javascript教程(6)——Boolean对象,Math对象,正则表达式

1. Boolean 对象

Boolean 对象表示两个值:"true" 或 "false"。  

创建 Boolean 对象的语法:
new Boolean(value); 
//构造函数
Boolean(value);
     //转换函数

参数:参数 value 由布尔对象存放的值或者要转换成布尔值的值。    返回值:当作为一个构造函数(带有运算符 new)调用时,Boolean() 将把它的参数转换成一个布尔值,并且返回一个包含该值的 Boolean 对象。当作为一个构造函数(带有运算符 new)调用时,Boolean() 将把它的参数转换成一个布尔值,并且返回一个包含该值的 Boolean 对象。

如果作为一个函数(不带有运算符 new)
调用时,Boolean() 只将把它的参数转换
成一个原始的布尔值,并且返回这个值。    

注释:如果省略 value 参数,或者设置为0、-0、null、""、false、undefined 或 NaN,则该对象设置为 false。否则设置为 true(即使 value 参数是字符串 "false")。

 

2.Math对象

Math对象用来处理所有的数学运算

2.1 创建Math对象

Math对象不能用new运算符创建,如果试图这样做则给出错误。

 

2.2 Math对象的方法

<center>表 2-1 Math对象的常用方法</center>

方法解释
abs(x)返回数字的绝对值
acos(x)返回数字的反余弦值
asin(x)返回数字的反正弦值
atan(x)返回位于-PI/2 和 PI/2 的反正切值
atan2(y,x)返回(x,y)位于 -PI 到 PI 之间的角度
ceil(x)返回x四舍五入后的最大整数 (方法执行的是向上取整计算,它返回的
cos(x)返回一个数字的余弦值
exp(x)返回 E^x 值
floor(x)返回 x 四舍五入后的最小整数
log(x)返回底数为E的自然对数
max(x,y)返回 x 和 y 之间较大的数
min(x,y)返回 x 和 y 之间较小的数
pow(x,y)返回 y^x 的值
random()返回位于 0 到 1 之间的随机函数
round(x)四舍五入后取整
sin(x)返回数字的正弦值
sqrt(x)返回数字的平方根
tan(x)返回一个角度的正切值

注意:Math对象没有构造函数,所以不能new!唯一一个所有API都直接通过Math类型名调用    

1.取整:  上取整:只要超过,就取下一个整数;

Math.ceil(num)
var num = 3.14159
var m1 =Math.ceil(num);
console.log(m1); //4

下取整:去掉小数部分,取整数部分

Math.floor(num);
var m2 = Math.floor(num);   
console.log(m2); //3    

四舍五入取整:小数部分够5就进1,不够就舍掉

var num=Math.round(num)
缺点:只能取整
var n1 = 4.3221;
var m3 = Math.round(n1);
console.log(m3); //4
var n2 = 4.5221;
var m4 = Math.round(n2);
console.log(m4); //5
var str=s.toFixed(d); d:0-20之间
缺点:返回字符串,不能直接用于计算

var s = 6.23466;
var str = s.toFixed(2);
console.log(str);   //6.23

 

2.乘方和开平方    乘方:  Math.pow(底数,幂)

var n1=Math.pow(10,2); //10*10
console.log(n1) //100

开平方:  Math.sqrt(num);

var n2 = Math.sqrt(9,2);
console.log(n2); //3

3.最大值和最小值

Math.max(值1,值2,...) //最大值

var m1 = Math.max(11,33,2,111,32);  
console.log(m1); //111  

Math.min(值1,值2,...) //最小值

var m2 = Math.min(222,1,33,44,2);
console.log(m2); //1

 

如何获取数组中的最大值与最小值:

固定套路

Math.max.apply(Math,str); 最大值
Math.min.apply(Math,str); 最小值
var str = [11,2,33,111,222,44];     
var max =Math.max.apply(Math,str);
console.log(max); //222
var min = Math.min.apply(Math,str);
console.log(min); //2

 

4.随机数:    任意min~max之间取随机整数    

Math.floor(Math.random()*(max-min+1)+min)

如果min从0开始,可简写为:

Math.floor(Math.random()*(max+1))
var num = Math.floor(Math.random()*(15-1));
console.log(num); 
//num等于0-15生成随机数

 

3.正则表达式

3.1 正则表达式语法

一个正则表达式就是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行  匹配。

 

3.2 创建正则表达式

3.2.1 正则表达式简介

什么是正则表达式简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具。其作用如下:    

  1. 测试字符串的某个模式  例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。

  2. 替换文本  可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。

  3. 根据模式匹配从字符串中提取一个子字符串。  可以用来在文本或输入字段中查找特定文字。

3.2.2 使用new关键词创建RegExp对象

new RegExp(pattern, attributes);
参数1:   pattern是一个字符串,
指定了正则表达式的模式或其他正则表达式。    
参数2: attributes是一个可选的模式字符串,
包含属性 "g","i","m",分别用于指定全
文匹配、忽略大小写匹配和多行匹配。   

•g (全文匹配(查找))   
•i (忽略大小写匹配(查找))   
•m (多行匹配(查找))  

例如:

var re = new RegExp("a", "i"); 
var str = "cdbBadbsbdabdz"; 
var arr = re.exec(str);
console.log(arr+"---"+arr.index);

 

3.2.3 使用字面量创建RegExp对象

var re = /a/i;
var str = "cdbBadbsbdabdz"; 
var arr = re.exec(str);
console.log(arr+"---"+arr.index);

 

3.3 RegExp对象常用属性介绍

var pattern=/e/gi;
//g 设置全局模式将返回:true 
console.log(pattern.global);

//i 设置忽略大小写将返回:true 
console.log(pattern.ignoreCase);

//m 设置多行查找将返回:true 
console.log(pattern.multiline);

//将返回搜索的原数据
console.log(pattern.source);

var arr = pattern.exec("abcdd3e3");
//获取查找到的元素下标
console.log(arr.index);

global - g(设置全局模式)    ignoreCase - i(设置忽略大小写)    multiline - m(设置多行查找)

 

3.4 RegExp对象常用函数介绍

3.4.1 test()

该函数搜索字符串中是否包含指定的值,包含返回true

var pattern=/t/;
var str="just do it";
//test()函数搜索字符串中是否包含指定的值,
包含返回true,否则 false 
console.log(pattern.test(str));

 

3.4.2 exec()

该函数搜索字符串中是否包含指定的值,返回包含匹配的值;无匹配,则返回null。    

var pattern=/O/i; 
var str="just do it";
console.log(pattern.exec(str));
var pattern=/t/g; 
var str="just do it"; 
var index = 0;
do {
    var result=pattern.exec(str); 
    if(result!=null){
        console.log((++index)+"---"+result);
    }
}while(result!=null);

3.4.3 compile()

compile()函数既可以改变检索模式,还可以添加或删除第2个参数

var pattern=/s/i; 
var str="just do it";
console.log(pattern.test(str)); 
pattern.compile("d"); 
console.log(pattern.test(str));

3.5 何时使用

查找 验证 替换 切割

模糊查找,验证字符串格式,模糊替换,按照一定规律切割字符串

3.6 正则语法

3.6.1 元字符

对常用字符集的简写方式

\d:1位数字 [0-9]
\w: 1位数字,字母或下划线 [0-9a-zA-Z_]
\s: 1位空字符:空格 tab 回车换行;

<center>表 3-1 元字符表</center>

元字符描述
.查找单个字符,除了换行和行结束符。
\w查找单词字符。
\W查找非单词字符。
\d查找数字。
\D查找非数字字符。
\s查找空白字符。
\S查找非空白字符。
\b匹配单词边界。
\B匹配非单词边界。
\0查找 NUL 字符。
\n查找换行符。
\f查找换页符。
\r查找回车符。
\t查找制表符。
\v查找垂直制表符。
\xxx查找以八进制数 xxx 规定的字符。
\xdd查找以十六进制数 dd 规定的字符。
\uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符。

元字符:对常用字符集的简写方式  

\d:1位数字 [0-9]   
\w: 1位数字,字母或下划线 [0-9a-zA-Z_]  
\s: 1位空字符:空格 tab 回车换行; 

实例

var str = "a2b3c4d7kjs98{7S2是";
var reg = /[0-9]/g;
     // \d 表示只匹配数字
var array = str.match(reg); 
console.log(array); 
//输出 ["2", "3", "4", "7",
 "9", "8", "7", "2"]
var str = "a2b3c4d7kjs98{7S2是";
var reg = /\D/g;
        // \D 表示只匹配非数字
var array = str.match(reg);
console.log(array);   
//  输出  ["a", "b", "c", "d", "k",
 "j", "s", "{", "S", "是"]
var str = "a2b3c4d7kjs98{7S2是";
var reg = /\w/g;
        // \w 表示匹配单字母和数字
var array = str.match(reg); 
console.log(array);
// 输出  ["a", "2", "b", "3", "c",
 "4", "d", "7", "k", "j", "s", "9",
  "8", "7", "S", "2"]
var str = "a2b3c4d7kjs98{7S2是";
var reg = /\W/g;
        // \W 表示匹配非单字母和非数字
var array = str.match(reg); 
console.log(array);
// 输出  ["{", "是"]

 

3.6.2 量词:规定一个字符集出现次数的量词

如何使用:紧跟字符集之后,修改相邻的前一个字符集

1.确定数量:3种:
{m,n} 最少m个,最多n个
{m,} m个以上
{m} 必须m个
2.不确定数量:3种:
?: 可有可无,最多一个
*: 可有可无,多了不限
+: 至少一个,多了不限

3.选择和分组:
分组: (子表达式);
选择:或	表达式1|表达式2;

4.指定匹配位置:
^:  开头位置的xxx,
专用在表达式开头
$:  结尾位置的xxx, 
专用在表达式结尾比如:
^\s+ 匹配开始位置的所有空字符
\s+$   匹配   结尾位置的所有空字符
^\s+|\s+$    匹配开头或结尾的空字符
前加^后加$(不带|)    表示从头到尾完整匹配;

<center>表 3-2  量词表</center>

量词描述
n+匹配任何包含至少一个 n 的字符串。
n*匹配任何包含零个或多个 n 的字符串。
n?匹配任何包含零个或一个 n 的字符串。
n{X}匹配包含 X 个 n 的序列的字符串。
n{X,Y}匹配包含 X 至 Y 个 n 的序列的字符串。
n{X,}匹配包含至少 X 个 n 的序列的字符串。
n$匹配任何结尾为 n 的字符串。
^n匹配任何开头为 n 的字符串。
?=n匹配任何其后紧接指定字符串 n 的字符串。
?!n匹配任何其后没有紧接指定字符串 n 的字符串。

实例

var str = "abccootcooacoccCciccc";

//var reg = /c*/gi; 
// * 表示 0个 或 多个
var reg = /c{0,}/gi;
//{0,} 等价与 *

var array = str.match(reg); 
console.log(array);
// 输出  ["", "", "cc", "", 
"", "", "c", "", "", "", "c",
 "", "ccCc", "", "ccc", ""]

var str = "abccootcooacoccCciccc";
//var reg = /c+/gi; 
// + 表示 1个 或 多个
var reg = /c{1,}/gi;
// {1,} 等 价 与 + 
var array = str.match(reg); 
console.log(array);
// 输出 ["cc", "c", "c", "ccCc", "ccc"]

//var reg = /c?/gi; 
// ? 表示 0个 或 1个
var reg = /c{0,1}/gi;
// {0,1} 等价与 ? 
var  array = str.match(reg); 
console.log(array);
// 输出  ["", "", "c", "c",
 "", "", "", "c", "", "", 
 "", "c", "", "c", "c", "C",
  "c", "", "c", "c", "c", ""]

var reg = /c{2,3}/gi; 
//{n,m} 表示最少n个 最多m个
array = str.match(reg); 
console.log(array);
// 输出 ["cc", "ccC", "ccc"]

 

3.6.3 选择和分组

选择和分组:  分组: (子表达式);  选择:或 表达式1|表达式2;      

实例    

var str = "abccootcooacoccCciccc";
var reg = /(a|b|c)c/gi; 
//   (a|b)分组	| 或者
var array = str.match(reg); 
console.log(array);

 

3.6.4 指定匹配位置

指定匹配位置:    

^:开头位置的xxx,专用在表达式开头    
$:结尾位置的xxx,专用在表达式结尾
比如:^\s+ 匹配开始位置的所有空字符   

\s+$ 匹配结尾位置的所有空字符    
^\s+|\s+$ 匹配开头或结尾的空字符   
前加^后加$(不带|):表示从头到尾完整匹配;   


实例

var array = 
['test.txt','tss.txt','aa.txt','cc.jpg','kk.jpg','ta.jpg'];
// ^ 表示 开头
// . 表示任意 一个 字符
// $ 表示结尾
var reg = /^t.*txt$/;
for(var i=0;i<array.length;i++){ 
    console.log(reg.exec(array[i]));
}

 

3.7 String对象和正则表达式相关的函数

match()搜索匹配的元素
search()搜索匹配的元素返回下标位置
replace()替换匹配的元素
split()根据规则分裂字符串

//开启全局模式
var pattern =/s/g;
var str = "alsl sdwl s1`2 3s"; 
//以数组的形式返回匹配的元素
console.log(str.match(pattern));

//返回第一个搜索到的元素下标位置
console.log(str.search(pattern));

//将匹配pattern的对应元素,全部替换为参数2指定的元素(大写的O)
console.log(str.replace(pattern,"O"));

var pattern1 = /\s/g; //\s表示空格字符
//根据给定的正则表达式将字符串进行分裂操作
console.log(str.split(pattern1));

 

4. 正则表达式实战案例

4.1 手机验证

/^1[3-9]\d{9}$/

var reg =  /^1[3-9]\d{9}$/;
var num1 = "150123456789"
var num2 = "10123456789 "
console.log(reg.test(num1))  // true
console.log(reg.test(num2))  // false

 

4.2 密码强度验证:

/^(?![a-z0-9]+)[a-zA-Z0-9]{8,10}$/;

var reg = 
/^(?![a-z0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{8,10}$/;
var pwd = null;
while(!reg.test(pwd==prompt("输入密码:"))){
    alert("密码强度不够");
}
alert("密码安全")

4.3 Email验证

/^(\w)+(.\w+)*@(\w)+((.\w+)+)$/

var reg = /^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/
var email1 = "234234452@qq.com";
var email2 = "234234452@qq";
console.log(reg.test(email1));  // true
console.log(reg.test(email2));  // false

 

 

 

 

 

PS:纯属本人原创,如有错误 欢迎指点  不才会及时更正  互相学习   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值