0%

常见正则表达式

匹配邮箱:

{username@hostname.com|edu|info)

1
/^[A-Za-z0-9]+([-.][A-Za-z0-9]+)*@[A-Za-z0-9]+(\.[A-Za-z0-9]+)*\.[A-Za-z]{2,6}$/

用户名可以包含点号和连字符,但是用户名以字符开头因此用/\w+[-.\w+]*,但是\w会匹配ASCII字母和数字,但有些系统中\w能够匹配非ASCII字母,,因此将\w换成[-A-Za-z0-9],结尾的域名一般在2-6个字符

匹配URL

比如匹配http或者https开头的url

1
/^((http|https)):\/\/)?[-A-Za-z0-9]+(\.[A-Za-z0-9]+)*\.[A-Za-z]{2,6}[a-zA-Z0-9_:\@&?=+,.!~%*\$]*(?<![.,?!])$/

主机名仍然为[A-Za-z0-9]+(.[A-Za-z0-9]+)*.[A-Za-z]{2,6},路径名[a-zA-Z0-9_:@&?=+,.!~%*$]*可有可无,结尾不能是./?!这些符号

或者

根据题目要求判断参数URL是否合法。首先URL结构一般包括协议、主机名、主机端口、路径、请求信息、哈希,而本题协议已给出为HTTP(S),使用正则匹配URL,核心步骤有:

  1. 首先必须是以http(s)开头并且可以不包含协议头部信息
  2. 主机名可以使用”-“符号,所以两种情况都要判断,包含”-“或不包含”-“
  3. 顶级域名很多,直接判断”.”之后是否为字母即可
  4. 最后判断端口、路径和哈希,这些参数可有可无

参考答案

1
2
3
4
const _isUrl = url => {
return /^((http|https):\/\/)?(([A-Za-z0-9]+-[A-Za-z0-9]+|[A-Za-z0-9]+)\.)+([A-Za-z]+)(:\d+)?(\/.*)?(\?.*)?(#.*)?$/.test(url)
}

匹配手机号

手机号一般是1开头,第二位只能是3-9,最多9个数字

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