第 2 页 - 孙立亚笔记 - 记录碰到的各种网站问题和解决方案

常用正则表达式

手机号验证:

严格验证:/^1(3|4|5|7|8)\d{9}$/   宽松验证: /^1\d{10}$/

function checkPhone(){ 
    var phone = document.getElementById('phone').value;
    if(!(/^1(3|4|5|7|8)\d{9}$/.test(phone))){ 
        alert("手机号码有误,请重填");  
        return false; 
    } 
}
^1(3|4|5|7|8)\d{9}$
表示以1开头,第二位可能是3/4/5/7/8等的任意一个,在加上后面的\d表示数字[0-9]的9位,总共加起来11位结束。

固定电话号码验证:

function checkTel(){
    var tel = document.getElementById('tel').value;
    if(!/^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/.test(tel)){
    alert('固定电话有误,请重填');
    return false;
    }
}

邮箱号码验证:

function checkEmail(str){
    var re = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/
    if(re.test(str)){
        alert("正确");
    }else{
        alert("错误");
    }
}

身份证验证:

//身份证正则表达式(15位)
isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
//身份证正则表达式(18位)
isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
身份证正则合并:(^\d{15}$)|(^\d{17}([0-9]|X)$)

提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) = ('|")?(w|\|/|.)+('|"| *|>)?
提取信息中的邮件地址:w+([-+.]w+)@w+([-.]w+).w+([-.]w+)*
提取信息中的图片链接:(s|S)(r|R)(c|C) = ('|")?(w|\|/|.)+('|"| *|>)?
提取信息中的IP地址:(d+).(d+).(d+).(d+)
提取信息中的中国电话号码(包括移动和固定电话):((d{3,4})|d{3,4}-|s)?d{7,14}
提取信息中的中国邮政编码:[1-9]{1}(d+){5}
提取信息中的中国身份证号码:d{18}|d{15}
提取信息中的整数:d+
提取信息中的浮点数(即小数):(-?d*).?d+
提取信息中的任何数字 :(-?d*)(.d+)?
提取信息中的中文字符串:[u4e00-u9fa5]*
提取信息中的双字节字符串 (汉字):1*


  1. x00-xff

阿里云服务器磁盘挂载操作过程

操作步骤:
1、SSH连接ECS服务器
2、运行 fdisk -l 命令查看ECS上的数据盘情况
说明:执行命令后,如果不存在/dev/vdb,表示您的实例没有数据盘。确认数据盘是否已挂载。
3、创建分区,依次执行下面命令
a、运行fdisk -u /dev/vdb命令分区数据盘。
b、输入p查看数据盘的分区情况。
c、输入n创建一个新分区。
d、输入p选择分区类型为主分区。
说明:创建一个单分区数据盘可以只创建主分区。如果要创建四个以上分区,您应该至少选择一次e(extended),创建至少一个扩展分区。
e、输入分区编号并按回车键。(本示例中,仅创建一个分区,输入1。)
f、输入第一个可用的扇区编号,按回车键采用默认值2048。
g、输入最后一个扇区编号。(本示例中,仅创建一个分区,按回车键采用默认值。)
h、输入p查看该数据盘的规划分区情况。
i、输入w开始分区,并在完成分区后退出。

[root@ecshost~ ]# fdisk -u /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x3e60020e.

Command (m for help): p
Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x3e60020e
Device Boot Start End Blocks Id System

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set

Command (m for help): p

Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x3e60020e
Device Boot Start End Blocks Id System
/dev/vdb1 2048 41943039 20970496 83 Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

4、运行fdisk -lu /dev/vdb命令查看新分区。(如果出现/dev/vdb1的相关信息,表示新分区已创建完成。)

[root@ecshost~ ]# fdisk -lu /dev/vdb

Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x3e60020e

Device Boot Start End Blocks Id System
/dev/vdb1 2048 41943039 20970496 83 Linux

5、运行mkfs.ext4 /dev/vdb1命令在新分区上创建一个文件系统。
本示例中,创建一个ext4文件系统。其他文件系统格式请自行修改mkfs.ext4命令。例如,如果您需要在Linux、Windows和Mac系统之间共享文件,可以运行mkfs.vfat /dev/vdb1命令创建VFAT文件系统。

[root@ecshost~ ]# mkfs.ext4 /dev/vdb1

mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242624 blocks
262131 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

6、向/etc/fstab写入新分区信息,启动开机自动挂载分区。
a、运行命令cp /etc/fstab /etc/fstab.bak,备份etc/fstab。
b、运行命令echo blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g' /mnt ext4 defaults 0 0 >> /etc/fstab,向/etc/fstab里写入新分区信息。
如果要把数据盘单独挂载到某个文件夹,例如单独用来存放网页,则将命令中/mnt替换成所需的挂载点路径。

7、运行cat /etc/fstab命令查看/etc/fstab中的新分区信息。

[root@ecshost~ ]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Dec 12 07:53:08 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=d67c3b17-255b-4687-be04-f29190d4**** / ext4 defaults 1 1
UUID=a4c73111-3a33-4569-a90c-b6d2e953**** /mnt ext4 defaults 0 0

8、运行mount /dev/vdb1 /mnt命令挂载文件系统。
如果运行df -h命令后出现新建文件系统的信息,表示文件系统挂载成功。

[root@ecshost~ ]# mount /dev/vdb1 /mnt
[root@ecshost~ ]# df -h

Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 1.6G 36G 5% /
devtmpfs 234M 0 234M 0% /dev
tmpfs 244M 0 244M 0% /dev/shm
tmpfs 244M 484K 244M 1% /run
tmpfs 244M 0 244M 0% /sys/fs/cgroup
tmpfs 49M 0 49M 0% /run/user/0
/dev/vdb1 20G 45M 19G 1% /mnt

SSH连接报错:“REMOTE HOST IDENTIFICATION HAS CHANGED! ” 解决方法

服务器重置了系统,再次连接ssh后报错

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:WD831i/lF/k5pFzATjGUpOno2sjJHh5WwrGU5ELMIIQ.
Please contact your system administrator.
Add correct host key in /home/salt/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/salt/.ssh/known_hosts:64
ECDSA host key for 47.30.125.39 has changed and you have requested strict checking.
Host key verification failed.

这是因为远程服务器的公钥被修改,与本地保存的远程服务器公钥不相符, SSH在第一次连接远程服务器时,会把对方公钥存到本地的~/.ssh/known_hosts 文件中,所以把这个文件中对应服务器IP的部分删除,保存,重新连接即可。

命令行解决方法, 执行如下命令,替换IP

ssh-keygen -R 47.30.125.39

或者手动删除此IP的部分

vim ~/.ssh/known_hosts

找到对应IP部分删除,保存。

phpmyadmin导入超大sql方法

一、 修改配置文件
在phpmyadmin根目录,查找config.inc.php, 如果没有,就查找config.sample.inc.php,复制并重命名为 config.inc.php。 编辑config.inc.php, 如下:

$cfg['UploadDir'] = 'upload';
$cfg['SaveDir'] = 'save';

二、创建所需目录、上传sql文件
在phpmyadmin根目录下创建两个目录: upload 和 save 。 把要导入的sql上传到新建的upload目录内。

三、重新打开phpmyadmin链接并导入
重新打开phpmyadmin链接 , 这时导入会有一个从 网站服务器选择 的选项, 选择服务器中的upload里的上传的文件,点执行,1000M的SQL轻松导入。

mysql 查询重复数据

1、查询表中重复数据,根据一个字段来判断提取

select * from sly_news 
where username in (select username from sly_news group by username having count(username) > 1)

2、查询表中的重复数据,不提取最小id值的数据, 主要用来删除重复值,删除替换最前面的select * 为delete 即可

select * from sly_news 
where username in (select username from sly_news group by username having count(username) > 1 
and id not in (select min(id) from sly_news group by username having count(username) > 1))

3、查询表中重复数据, 根据多个字段判断

select * from sly_news a where (a.username, a.userid) in (
select username, userid from sly_news group by username, userid having count(*) > 1 )