1.日期类
2.url编码和解码
3.进制转换
4.正则表达式

1.日期

var d = new Date(); 获取当前系统时间
d.getDate()/d.getFullYear()…

方法 描述
getDate() 以数值返回天数(1-31)
getDay() 以数值获取周几(0-6)
getFullYear() 获取四位的年(yyyy)
getHours() 获取小时(0-23)
getMilliseconds() 获取毫秒(0-999)
getMinutes() 获取分(0-59)
getMonth() 获取月(0-11)
getSeconds() 获取秒(0-59)
getTime() 获取时间戳(从 1970 年 1 月 1 日至今),毫秒级

2. url编码和解码

      现在的信息网络都是数字的,很多东西要保存传输就得编码,比如你要保存一篇文章,里面的字就是一些二进制编码。编码就是如何把信息转换成数字序列,解码则是把数字序列转换成信息。
简单理解为:1. 编码(encode)是将人能够认识的信息转换为看不懂的。 2. 解码(decode)是将经过加密的对象转换为我们能够认识的信息

1.encodeURI 和 decodeURI

原理:返回编码为有效的统一资源标识符(URI)的字符串,不会被编码的字符:!@#$&*()=:/;?+'

  • encodeURI()是Javascript中真正用来对URL编码的函数。
  • encodeURI()是Javascript中真正用来对URL编码的函数。

2.encodeURIComponent 和 decodeURIComponent(推荐)

原理:对URL的组成部分进行个别编码,而不用于对整个URL进行编码

1
2
3
4
5
6
7
- 编码:encodeURIComponent('http://www.baidu.com?name=zhang@xiao@jie&order=1')
   
结果:http%3A%2F%2Fwww.baidu.com%3Fname%3Dzhang%40xiao%40jie%26order%3D1

- 解码:decodeURIComponent("http%3A%2F%2F/www.baidu.com%3Fname%3Dzhang%40xiao%40jie%26order%3D1")

结果:http://www.baidu.com?name=zhang@xiao@jie&order=1

3.escape编码URL特殊字符

当url地址中包含&、+、%等特殊字符(主要是传递参数时,参数的内容中包含这些字符)时,地址无效。Javascript语言用于编码的函数,一共有三个,最古老的一个就是escape()

url的Unicode编码:出现这种 \uXXXX 就有可能是Unicode编码

1
escape("\u002F");  // 结果为 /

3.进制转换

  • 二进制前缀0b
  • 八进制前缀0o
  • 十进制不用前缀
  • 十六进制前缀0x

数字转各进制字符串用num.toString(n),n为2-36的数字,表示2-36进制
字符串转数字用parseInt(numString,n),n为2-36的数字,表示用2-36进制方式解析字符串得到数字,有0x前缀时可不用指定n=16,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//十进制转其他
let x=110;
alert(x.toString()); // 转换为字符串
alert(x.toString(2));
alert(x.toString(8));
alert(x.toString(32));
alert(x.toString(16));
//其他转十进制
x='110';
alert(parseInt(x,2));
alert(parseInt(x,8));
alert(parseInt(x,16));
//其他转其他
//先用parseInt转成十进制再用toString转到目标进制
alert(String.fromCharCode(parseInt(141,8)));
alert(parseInt('ff',16).toString(2));

4.正则表达式

正则表达式的创建方式

  1. 直接创建方式(推荐)

var reg = /pattern/flags

  1. 实例创建方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
let reg = new RegExp(pattern,flags);

pattern:正则表达式
flags:标识修饰符
i 忽略大小写匹配
m 多行匹配,即在到达一行文本末尾时还会继续寻常下一行中是否与正则匹配的项
g 全局匹配 模式应用于所有字符串,而非在找到第一个匹配项时停止

方式一:
var reg = /ab[a-z]/ig;
var str = 'abd48515454奥比岛abk45';
console.log(reg.test(str));

方式二:
let reg = new RegExp('ab[a-z]','ig');
console.log(reg.test(str));

元字符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
代表特殊含义的元字符:
\d : 0-9之间的任意一个数字 \d只占一个位置
\w : 数字,字母 ,下划线 0-9 a-z A-Z _
\s : 空格或者空白等
\D : 除了\d
\W : 除了\w
\S : 除了\s
. : 除了\n之外的任意一个字符
\ : 转义字符
| : 或者
() : 分组
\n : 匹配换行符
\b : 匹配边界 字符串的开头和结尾 空格的两边都是边界 => 不占用字符串位数
^ : 限定开始位置 => 本身不占位置
$ : 限定结束位置 => 本身不占位置
[a-z] : 任意字母 []中的表示任意一个都可以
[^a-z] : 非字母 []中^代表除了
[abc] : abc三个字母中的任何一个 [^abc]除了这三个字母中的任何一个字符

代表次数的量词元字符:
* : 0到多个
+ : 1到多个
? : 0次或1次 可有可无
{n} : 正好n次
{n,} : n到多次
{n,m} : n次到m次

正则方法

  1. reg.test(str) 用来验证字符串是否符合正则 符合返回true 否则返回false

    1
    2
    3
    // 匹配从18到65年龄段所有的人
    let reg = /(18|19)|([2-5]\d)|(6[0-5])/;
    console.log(reg.test("65"));
  2. str.match(reg) 如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null

    1
    2
    3
    4
    5
    6
    let str = 'abc123cba456aaa789';
    let reg = /\d+/g;
    console.log(reg.exec(str));
    // ["123", index: 3, input: "abc123cba456aaa789"]
    console.log(str.match(reg));
    // ["123", "456", "789"]

举例说明:判断是否是mobile还是PC

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function IsPC(){
let userAgentInfo = navigator.userAgent;
let Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
let flag = true;
for (let v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = false; break; }
}
return flag;
}
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
//alert(navigator.userAgent);
window.location.href ="iPhone.html";
} else if (/(Android)/i.test(navigator.userAgent)) {
//alert(navigator.userAgent);
window.location.href ="Android.html";
} else {
window.location.href ="pc.html";
}

参考文章


 评论

联系我 | Contact with me

Copyright © 2019-2020 谁知你知我,我知你知深。此恨经年深,比情度日久

博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议