分类: 计算机

  • 前端知识点汇总(持续更新)

    HTML5:

    新增标签元素

    header, footer, aside, nav, section, canvas, video, audio

    新增 Input 类型

    date, datetime, email, number, range, tel, color

    本地存储

    生命周期

    • cookie:可设置过期时间
    • localStorage:永久存储
    • sessionStorage:关闭标签页自动清除

    存储大小

    • cookie:4KB
    • sessionStorage:5MB – 10MB
    • localStorage:5MB – 10MB

    作用域

    • cookie:可设置 Domain 和 Path,控制哪些域名和路径可以访问
    • localStorage:同源策略下的所有窗口和标签页共享
    • sessionStorage:仅当前标签页有效,即使同源的其他标签页也无法访问

    <script> 加载方式

    • 默认同步阻塞 HTML 解析
    • defer 延迟执行直至DOM解析完后
    • async 异步引入,下载完成后立即执行

    CSS3:

    新增属性

    • 边框:border-radius, box-shadow, border-image
    • 背景:background-size, background-origin
    • 文字:text-shadow
    • transfrom:translate, rotate, scale, skew, matrix

    自定义字体:@font-face

    动画

    rgba 颜色 / 线性渐变
    .test {
      background-color: rgba(0, 0, 0, 0.5);
        background: linear-gradient(to bottom, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
    }

    flex 布局

    媒体查询

    命名规范

    BEM

    JS:

    小数精度处理

    • 使用 toFixed 取后几位小数
    • 把小数转为整数再进行运算
    • 使用精度运算库,如:big.js

    for…infor…of 的区别

    • for-in 历遍对象,通常获取 key(类似 Object.keys)
    • for-of 历遍可迭代对象,如 ArrayMapSet

    任务队列(Task Queue)

    • 先执行同步再执行异步
    • 核心作用:处理异步代码的调度和执行
    • 宏任务:setTimeoutsetIntervalI/O
    • 微任务:Promise 回调(.then / .catch/ .finally)、MutationObserver 回调等
    • 微任务优先级高于宏任务
    • 调用 fetch 会同步执行并立即返回一个 promise

    call | apply | bind

    均用于改变函数内部 this 的指向

    const obj = { name: "Alice" };
    
    function greet() {
      console.log(`Hello, ${this.name}!`);
    }
    
    greet.call(obj);      // Hello, Alice!
    greet.apply(obj);     // Hello, Alice!
    const boundGreet = greet.bind(obj);
    boundGreet();         // Hello, Alice!

    ES:

    有哪些新特性?

    变量声明

    letconst

    箭头函数

    简化函数语法,自动绑定 this

    模板字符串

    `Hello ${name}`

    解构赋值

    const { age, name } = user;
    const [first, second] = [1, 2];

    默认参数

    扩展运算符

    const arr1 = [1, 2];
    const arr2 = [...arr1, 3]; // [1, 2, 3]; // 合并数组
    const objCopy = { ...originalObj }; // 合并对象

    Promise 和 异步处理

    Promise.all – 等待所有 Promise 对象都执行完成 Promise.race – 返回第一个完成的 Promise(无论成功失败) Promise.any – 返回第一个成功的 Promise

    模块化:importexport

    Set, Map

    let s = new Set(); s.add(‘a’).add(‘b’)
    let m = new Map(); m.set(’age’, 16)

    数组的 includes,检查是否包含某元素

    async / await

    Generator 函数的语法糖,省去手动 next() 的步骤

    Object.values() 和 Object.entries()

    Object.values({ a: 1, b: 2 }); // [1, 2]
    Object.entries({ a: 1, b: 2 }); // [["a", 1], ["b", 2]]

    字符串填充:padStart() 和 padEnd()

    "5".padStart(2, "0"); // "05"

    空值合并运算符

    const value = input ?? "default";

    动态导入模块

    const module = await import('./module.js')

    replaceAll 替换所有匹配的子串

    "a.b.c".replaceAll(".", "-"); // "a-b-c"

    require 和 import

    • 分别属于 CommonJS 和 ES 两种不同模块系统
    • require 动态加载,运行时解析
    • import 静态加载,编译时解析
    • Proxy
      • 数据绑定与响应式系统:通过 set 拦截属性赋值,触发副作用(如重新渲染)
      • 属性访问控制和校验:限制对象属性的访问或赋值

    微信小程序:

    OpenID & UnionID

    OpenID

    • 用户在当前小程序中的唯一标识
    • 用途:用于识别用户在当前小程序内的身份(如用户数据存储、业务逻辑处理)
    • 获取:通过 wx.login() 获取 code,后端用 code 调用微信接口换取 OpenID

    UnionID

    • 用户在微信的唯一标识
    • 用途:实现跨小程序、公众号用户身份统一
    • 获取:通过 wx.getUserInfo() 获取 encryptedData, iv,发送到后端解密,或者通过按钮触发授权

    性能优化:

    • 文本压缩(css, js, html)
    • 图片压缩
    • 合并资源(合并文本、雪碧图)
    • 图片懒加载
    • 合并请求
    • 缓存资源(设置浏览器头、设置 html head)
    • 使用 CDN
    • gzip 压缩
    • 减少 DOM 操作
    • CSS 样式置顶、JS 脚本置底
    • 防抖和节流
      • 防抖:保证N秒内执行一次,如果N秒内触发将再执行并重新计算时间
      • 节流:保证N秒内只能触发一次
  • 【JS】事件循环(Event Loop)

    核心概念

    事件循环是 JavaScript 处理异步操作的机制,它使得单线程的 JS 能够实现非阻塞 I/O 操作。

    三大关键组成部分

    1. 调用栈(Call Stack):

      • 执行同步代码的地方
      • 后进先出(LIFO)结构
    2. 任务队列(Task Queues):

      • 宏任务队列:setTimeout、setInterval、I/O 等
      • 微任务队列:Promise.then、MutationObserver 等
    3. 事件循环机制:

      • 不断检查调用栈和任务队列
      • 决定何时执行哪个任务

    执行流程

    1. 从宏任务队列取出一个任务执行(如 script 整体代码)
    2. 执行过程中:
      • 同步代码立即执行
      • 遇到异步操作,注册相应回调
    3. 当前宏任务执行完毕:
    • 立即执行所有微任务
    • 如果微任务产生新微任务,继续执行直到队列清空
    1. 必要时进行UI 渲染
    2. 从宏任务队列取下一个任务,开始新循环

    执行顺序示例

    console.log('1. 同步代码'); // 同步
    
    setTimeout(() => console.log('4. 宏任务'), 0); // 宏任务
    
    Promise.resolve().then(() => console.log('3. 微任务')); // 微任务
    
    console.log('2. 同步代码'); // 同步
    
    /* 输出顺序:
    1. 同步代码
    2. 同步代码
    3. 微任务
    4. 宏任务
    */

    重要特点

    • 微任务优先级高于宏任务:每执行完一个宏任务,就会清空微任务队列
    • 避免阻塞:长时间同步代码会阻塞事件循环
    • 不同环境差异:Node.js 与浏览器实现有细微差别

    理解事件循环是掌握 JavaScript 异步编程的基础,有助于编写高效、无阻塞的代码。

  • Linux 常用命令完整大全

    目录

    1. 文件与目录操作
    2. 文件查看/编辑
    3. 权限与用户组
    4. 进程与系统监控
    5. 磁盘/挂载/文件系统
    6. 网络操作
    7. 软件包管理(CentOS/RHEL & Ubuntu/Debian)
    8. 压缩解压
    9. 文本处理三剑客:grep / sed / awk
    10. 系统信息、时间、环境变量
    11. 远程连接与文件传输
    12. 服务管理(systemd)
    13. 快捷辅助命令

    一、文件与目录操作

    命令 作用 常用示例
    pwd 打印当前工作目录 pwd
    cd 切换目录 cd /etccd ~ 回家目录、cd - 返回上一级目录
    ls 列出目录内容 ls -l 详细列表、ls -a 显示隐藏文件、ls -lh 人性化大小
    mkdir 创建目录 mkdir testmkdir -p a/b/c 递归创建多级目录
    rmdir 删除空目录 rmdir test
    rm 删除文件/目录 rm file.txtrm -rf dir 强制递归删除(慎用)
    cp 复制文件/目录 cp a.txt /tmp/cp -r dir1 dir2 复制文件夹
    mv 移动/重命名 mv old.txt new.txtmv file /home/
    touch 创建空文件/更新时间戳 touch log.txt
    ln 创建软硬链接 ln -s /etc/hosts link_hosts 软链接
    find 查找文件 find / -name "*.log"find . -size +100M 查找大于100M文件

    二、文件查看/编辑

    命令 作用 常用示例
    cat 一次性读取全部文件 cat info.txtcat > new.txt 写入内容
    more 分页浏览(只能下翻) more access.log
    less 分页浏览(上下翻、搜索) less nginx.log
    head 查看文件前N行 head -20 test.log 前20行
    tail 查看末尾N行、实时跟踪日志 tail -f nginx.log 实时刷新、tail -n 50 log
    wc 统计行数、单词、字符 wc -l file.txt 统计行数
    du 查看目录占用磁盘 du -sh * 当前目录各文件夹大小
    vim / vi 终端文本编辑器 vim nginx.conf
    nano 简易轻量编辑器 nano test.txt

    三、权限、用户、用户组

    命令 作用 常用示例
    chmod 修改文件权限 chmod 755 run.shchmod +x run.sh 添加执行权限
    chown 修改文件属主/属组 chown root:root test.txt
    useradd 创建用户 useradd admin
    userdel 删除用户 userdel -r admin 连带家目录删除
    passwd 修改密码 passwd root
    groupadd 创建用户组 groupadd dev
    usermod 修改用户附属组 usermod -aG docker root
    id 查看当前用户UID/GID id
    who / w 查看登录用户 w 显示登录用户及操作
    su 切换用户 su root
    sudo 临时以管理员执行 sudo systemctl restart nginx

    四、进程与系统监控

    命令 作用 常用示例
    ps 查看进程快照 ps -efps aux
    top 实时进程资源监控 top
    htop 增强版top(需安装) htop
    kill 终止进程 kill 1234kill -9 1234 强制杀死
    pkill 按进程名杀死 pkill nginx
    nice / renice 调整进程优先级 nice -n -10 ./app
    free 查看内存使用 free -h 人性化单位
    vmstat 虚拟内存、IO状态 vmstat 2 每2秒刷新
    uptime 系统运行时长、负载 uptime

    五、磁盘、挂载、文件系统

    命令 作用 常用示例
    df 磁盘分区使用率 df -h
    mount 挂载磁盘/镜像 mount /dev/sdb1 /data
    umount 卸载挂载点 umount /data
    fdisk 磁盘分区工具 fdisk -l 列出所有磁盘
    blkid 查看磁盘UUID blkid
    fsck 文件系统修复(卸载后执行) fsck /dev/sdb1

    六、网络操作

    命令 作用 常用示例
    ip 新版网络工具(替代ifconfig) ip a 查看网卡、ip route 路由表
    ifconfig 旧网卡信息工具 ifconfig eth0
    ping 连通性测试 ping baidu.com
    netstat 查看端口、连接 netstat -tulnp 监听端口
    ss 替代netstat,更快 ss -tulnp
    curl 网络请求工具 curl https://www.baidu.com
    wget 文件下载 wget https://xxx/file.zip
    telnet 端口连通测试 telnet 127.0.0.1 80
    traceroute 路由追踪 traceroute baidu.com
    host / nslookup DNS解析 nslookup www.qq.com

    七、软件包管理

    1)CentOS / RHEL / Rocky Linux(yum/dnf)

    命令 作用
    yum list installed 列出已装软件
    yum install nginx 安装软件
    yum remove nginx 卸载
    yum update 全系统升级
    yum search mysql 搜索软件包
    rpm -ivh xxx.rpm 本地rpm包安装
    rpm -qa | grep nginx 查询是否安装

    2)Ubuntu / Debian(apt)

    命令 作用
    apt update 更新软件源缓存
    apt install nginx 安装
    apt remove nginx 卸载
    apt full-upgrade 系统升级
    apt search nginx 搜索包
    dpkg -i xxx.deb 本地deb安装

    八、压缩解压

    命令 格式 示例
    tar -zcvf tar.gz 打包压缩 tar -zcvf file.tar.gz dir/
    tar -zxvf 解压tar.gz tar -zxvf file.tar.gz
    tar -jcvf tar.bz2 tar -jcvf file.tar.bz2 dir
    unzip zip解压 unzip file.zip
    zip -r zip压缩文件夹 zip -r out.zip dir
    gzip 单文件压缩 gzip test.txt

    九、文本三剑客:grep / sed / awk

    命令 作用 示例
    grep 文本匹配搜索 grep "error" nginx.loggrep -v "info" 排除匹配行
    sed 流编辑器,替换/删除 sed 's/old/new/g' file.txt 全局替换
    awk 结构化文本统计、切割 awk '{print $1}' log.txt 打印第一列

    十、系统信息、时间、环境变量

    命令 作用
    uname -a 内核、系统版本
    hostname 主机名
    hostnamectl 修改主机名(systemd)
    date 当前系统时间
    timedatectl 时区时间管理
    env / printenv 查看环境变量
    echo $PATH 打印PATH变量
    history 查看历史执行命令
    clear 清屏

    十一、远程连接 & 文件传输

    命令 作用 示例
    ssh 远程登录服务器 ssh root@192.168.1.100
    scp 服务器之间传文件 scp local.zip root@ip:/tmp/
    sftp 交互式远程文件传输 sftp root@ip
    rsync 增量同步文件(备份首选) rsync -avz dir/ root@ip:/data/

    十二、Systemd 服务管理(主流 Linux)

    命令 作用
    systemctl start nginx 启动服务
    systemctl stop nginx 停止
    systemctl restart nginx 重启
    systemctl enable nginx 开机自启
    systemctl disable nginx 关闭自启
    systemctl status nginx 查看运行状态
    systemctl list-units --type=service 列出所有服务
    journalctl -u nginx 查看服务日志

    十三、开关机、权限辅助、管道重定向

    命令 说明
    reboot 重启服务器
    shutdown -h now 立即关机
    shutdown -r 10 10分钟后重启
    > 输出覆盖文件:echo 123 > a.txt
    >> 追加写入文件:echo abc >> a.txt
    \| 管道,传递输出:ps aux \| grep nginx
    & 后台运行进程:./app &
    nohup 脱离终端后台运行:nohup ./app &
    alias ll='ls -lh' 设置命令别名

    十四、高危命令警示(务必谨慎)

    1. rm -rf / 清空整个系统,绝对禁止
    2. dd if=/dev/zero of=/dev/sda 清空整块硬盘
    3. chmod 777 所有用户完全读写执行,存在安全漏洞
    4. kill -9 1 强制杀死systemd/init,服务器直接宕机
  • pt / px / em 单位换算说明 + 完整对照表

    一、单位基础定义与换算公式

    1. 各单位含义

    1. pt(point,磅) 物理固定长度单位,1pt = 1/72 英寸。
    2. px(pixel,像素) 屏幕虚拟像素单位,换算物理尺寸依赖 DPI(每英寸像素):
    • Windows 默认:96 DPI
    • Apple / 印刷标准:72 DPI
    1. em(相对字体单位) 相对于当前基础字号的倍数,前端通用基准:1em = 16px

    2. 换算公式(Windows 96DPI)

    [ pt = px \times \frac{72}{DPI} ] 代入 Windows 96DPI: [ pt = px \times \frac{72}{96} = px \times 0.75 ]

    二、字号 pt / px / em 完整对照表(基准 1em=16px,Windows96DPI)

    中文字号 pt(磅) px(像素) em 倍数
    初号 42pt 56px 3.5em
    小初 36pt 48px 3em
    34pt 45px 2.75em
    32pt 42px 2.55em
    30pt 40px 2.45em
    29pt 38px 2.35em
    28pt 37px 2.3em
    27pt 36px 2.25em
    一号 26pt 35px 2.2em
    25pt 34px 2.125em
    小一 24pt 32px 2em
    二号 22pt 29px 1.8em
    20pt 26px 1.6em
    小二 18pt 24px 1.5em
    17pt 23px 1.45em
    三号 16pt 22px 1.4em
    小三 15pt 21px 1.3em
    14.5pt 20px 1.25em
    四号 14pt 19px 1.2em
    13.5pt 18px 1.125em
    13pt 17px 1.05em
    小四 12pt 16px 1em
    11pt 15px 0.95em
    五号 10.5pt 14px 0.875em
    10pt 13px 0.8em
    小五 9pt 12px 0.75em
    8pt 11px 0.7em
    六号 7.5pt 10px 0.625em
    7pt 9px 0.55em
    小六 6.5pt 8px 0.5em
    七号 5.5pt 7px 0.4375em
    八号 5pt 6px 0.375em
  • 【CSS】常用样式(持续更新)

    CSS Hack

    书写顺序:Chrome -> FF -> IE8 -> IE7 -> IE6

    * 版本
    _ IE6以下
    \9 IE6+
    * IE7 以下
    *+ IE7
    \0 IE8+ 和 Opera

    Media Queries

    <link rel="stylesheet" href="big.css" media="screen and (min-width: 641px)">
    <link rel="stylesheet" href="small.css" media="screen and (max-width: 640px)">
    <link rel="stylesheet" href="style.css" media="screen and (min-width:640px) and (max-width:900px)">

    Flex水平垂直居中

    {
      display: flex;
      align-item: center;
      justify-content: center;
    }

    屏幕自动居中

    {
      position: absolute;
      top: 50%;
      left: 50%;
      width: 320px;
      transform: translate(-50%, -50%);
    }

    单行文本溢出

    {
      text-overflow: ellipsis;
      white-space: nowrap;
        overflow: hidden;
    }

    多行文本溢出

    {
      display: -webkit-box;
      -webkit-box-orient: vertical;
      -webkit-line-clamp: 3;
      overflow: hidden;
    }

    ios平滑滚动效果

    {
      -webkit-overflow-scrolling: touch;
    }

    清除浮动

    :after {
      display: block;
      clear: both;
      content: " ";
    }

    字体&规范

    • OOCSS、SMACSS、BEM

    • 移动端字体

      {
      font-family: Tahoma, Arial, Roboto, "Droid Sans", "Helvetica Neue", "Droid Sans Fallback", "Heiti SC", sans-self;
      }
    • PC端字体

      {
      font-family: Tahoma, Arial, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei", Simsun, sans-self;
      }
    • 移动 & PC 字体

      {
      font-family: Tahoma,Arial,Roboto,"Droid Sans","Helvetica Neue","Microsoft YaHei","Droid Sans Fallback","Heiti SC","Hiragino Sans GB",Simsun,sans-self;
      }

    中文两端对齐

    {
      text-justify: inter-ideograph;
      text-align: justify;
    }

    省略文字

    {
      text-overflow: ellipsis;
      white-space: nowrap;
      overflow: hidden;
    }

    文字适应浏览器宽度
    ```css
    {
      white-space: pre-wrap;
      word-wrap: break-word;
    }
    ```
    
    ### 自动换行
    ```css
    {
      white-space: normal;
      word-wrap: break-word;
      word-break: normal;
    }
    ```
    
    ### 三角形
    ```css
    {
      width: 0;
      height: 0;
      border-right: 50px solid transparent;
      border-left: 50px solid transparent;
      border-bottom: 50px solid red;
    }
    ```
    
    ### 自定义字体
    ```css
    @font-face {
      font-family: 'iconfont';
      src: url('//at.alicdn.com/t/font_657067_0jljwrqiuueo.eot');
      src: url('//at.alicdn.com/t/font_657067_0jljwrqiuueo.eot?#iefix') format('embedded-opentype'),
      url('//at.alicdn.com/t/font_657067_0jljwrqiuueo.woff2') format('woff2'),
      url('//at.alicdn.com/t/font_657067_0jljwrqiuueo.woff') format('woff'),
      url('//at.alicdn.com/t/font_657067_0jljwrqiuueo.ttf') format('truetype'),
      url('//at.alicdn.com/t/font_657067_0jljwrqiuueo.svg#iconfont') format('svg');
    }
    ```
    
    ### 移动端1px
    ```css
    .box {
      position: relative;
      width: 100%;
      height: 1px;
      margin: 20px 0;
    }
    .box::after {
      position: absolute;
      bottom: 0;
      width: 100%;
      height: 1px;
      content: '';
      background: red;
      transform: scaleY(0.5);
      transform-origin: 0 0;
    }
    ```
    
    ### calc 函数
    ```css
    #div {
      position: absolute;
      left: 50px;
      width: calc( 100% / (100px * 2) );
      border: 1px solid black;
    }
    ```
    
    ### css 禁止用户选择
    ```css
    body {
      -webkit-touch-callout: none;
      -webkit-user-select: none;
      user-select: none;
    }
    ```
    
    ### 消除 transtration 闪屏
    ```css
    .css {
      -webkit-transform-style: preserve-3d;
      -webkit-backface-visibility: hidden;
      -webkit-perspective: 1000;
    }
    ```
    
    ### 去掉Chrome中input获得焦点时的颜色边框
    ```css
    input {
      outline: none;
    }
    ```
  • 【JS】常用正则表达式

    数字

    判断数字
    ^[0-9]*$
    n位的数字
    ^\d{n}$
    至少n位的数字
    ^\d{n,}$
    m-n位的数字:
    ^\d{m,n}$
    零和非零开头的数字
    ^(0|[1-9][0-9]*)$
    非零开头的最多带两位小数的数字
    ^([1-9][0-9]*)+(\.[0-9]{1,2})?$
    带1-2位小数的正数或负数
    ^(\-)?\d+(\.\d{1,2})$
    正数、负数、和小数
    ^(\-|\+)?\d+(\.\d+)?$
    有两位小数的正实数
    ^[0-9]+(\.[0-9]{2})?$
    有1~3位小数的正实数
    ^[0-9]+(\.[0-9]{1,3})?$
    非零的正整数
    ^[1-9]\d*$
    ^([1-9][0-9]*){1,3}$
    ^\+?[1-9][0-9]*$
    非零的负整数
    ^\-[1-9][]0-9"*$
    ^-[1-9]\d*$
    非负整数
    ^\d+$
    ^[1-9]\d*|0$
    非正整数
    ^-[1-9]\d*|0$
    ^((-\d+)|(0+))$
    非负浮点数
    ^\d+(\.\d+)?$
    ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
    非正浮点数
    ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
    ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
    正浮点数
    ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$
    ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
    负浮点数
    ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$
    ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
    浮点数
    ^(-?\d+)(\.\d+)?$
    ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

    字符

    汉字
    ^[\u4e00-\u9fa5]{0,}$
    英文和数字
    ^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
    长度为3-20的所有字符
    ^.{3,20}$
    由26个英文字母组成的字符串
    ^[A-Za-z]+$
    由26个大写英文字母组成的字符串
    ^[A-Z]+$
    由26个小写英文字母组成的字符串
    ^[a-z]+$
    由数字和26个英文字母组成的字符串
    ^[A-Za-z0-9]+$
    由数字、26个英文字母或者下划线组成的字符串
    ^\w+$ 或 ^\w{3,20}$
    中文、英文、数字包括下划线
    ^[\u4E00-\u9FA5A-Za-z0-9_]+$
    中文、英文、数字但不包括下划线等符号
    ^[\u4E00-\u9FA5A-Za-z0-9]+$
    ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
    可以输入含有^%&’,;=?$\"等字符
    [^%&',;=?$\x22]+
    禁止输入含有~的字符
    [^~\x22]+

    常用验证

    Email地址
    ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
    域名
    [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
    Internet URL
    [a-zA-z]+://[^\s]*
    ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
    国内电话号码(0511-4405222、021-87888822)
    \d{3}-\d{8}|\d{4}-\d{7}
    身份证号(15位、18位数字),最后一位是校验位,可能为数字或字符X
    (^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
    帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)
    ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
    密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线)
    ^[a-zA-Z]\w{5,17}$
    强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间)
    ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$
    强密码(必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-10之间)
    ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
    日期格式
    ^\d{4}-\d{1,2}-\d{1,2}
    一年的12个月(01~09和1~12)
    ^(0?[1-9]|1[0-2])$
    一个月的31天(01~09和1~31)
    ^((0?[1-9])|((1|2)[0-9])|30|31)$
    xml文件
    ^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
    中文字符的正则表达式
    [\u4e00-\u9fa5]
    双字节字符
    [^\x00-\xff]

    (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))

    空白行的正则表达式
    \n\s*\r

    (可以用来删除空白行)

    HTML标记的正则表达式
    <(\S*?)[^>]*>.*?|<.*? /> 

    ( 首尾空白字符的正则表达式:^\s|\s$或(^\s)|(\s$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)

    中国邮政编码
    [1-9]\d{5}(?!\d)

    (中国邮政编码为6位数字)

    IP地址
    ((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))
    钱的输入格式:
    • 有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":
        ^[1-9][0-9]*$
    • 这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:
        ^(0|[1-9][0-9]*)$
    • 一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:
        ^(0|-?[1-9][0-9]*)$
    • 这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧。下面我们要加的是说明可能的小数部分:
        ^[0-9]+(.[0-9]+)?$
    • 必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:
        ^[0-9]+(.[0-9]{2})?$
    • 这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:
        ^[0-9]+(.[0-9]{1,2})?$
    • 这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:
        ^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
    • 1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:
        ^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

    备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里