美文网首页JavaScript 进阶营Web 前端开发
JavaScript中登录名的正则表达式及解析(0基础)

JavaScript中登录名的正则表达式及解析(0基础)

作者: 毛三十 | 来源:发表于2018-03-09 09:15 被阅读1次

简言

在JavaScript中,经常会用到正则表达式来进行模式匹配。例如,登录名验证,密码强度验证,字符串查找或替换等操作。现在就开始吧,零基础写出你的第一个正则表达式!

在做用户注册时,都会用到登录名正则校验。要写出正确的正则表达式,先要定义表达式规则。假设登录名做如下规则定义:

  • 最短4位,最长16位 {4,16}
  • 可以包含小写大母 [a-z] 和大写字母 [A-Z]
  • 可以包含数字 [0-9]
  • 可以包含下划线 [ _ ] 和减号 [ - ]

根据以上规则,很容易给出正则表达式的字面量如下:

var pattern = /^[a-zA-Z0-9_-]{4,16}$/

测试

测试结果如下:

var pattern = /^[a-zA-Z0-9_-]{4,16}$/;
pattern.test('ifat3') = true
pattern.test('42du') = true
pattern.test('42du-_') = true
pattern.test('_42du') = true
pattern.test('42d') = false
pattern.test('42du42du42du42du1') = false
pattern.test('42du@') = false

测试代码

解析

字面量 / /

正则表达式的字面量定义为包含在一对斜杠(/)之间的字符,例如:

var pattern = /s$/;

上述字面量匹配所有以字母“s”结尾的字符串。

字符类 [ ]

将字符放进方括号内就组成了字符类。一个字符类可以匹配它所包含的任意字符。因此,正则表达式/[abc]/就和字母“a”,“b”,“c”中的任意一个都匹配。

字符类可以使用连字符来表示字符范围。要匹配拉丁小写字母可以使用/[a-z]/

[a-zA-Z0-9_-]表示匹配任意的拉丁大小写字母,数字再加上下划线和减号。

重复 {}

在正则表达式中用{ }来表示元素重复出现的次数。

  • {n,m} 匹配前一项至少n次,但不能超过m次
  • {n,} 匹配前一项n次或更多次
  • {n} 匹配前一项n次

[a-zA-Z0-9_-]{4,16} 表示匹配任意的拉丁大小写字母,数字再加上下划线和减号出现最少4次,最多16次。

匹配位置

  • ^ 匹配字符串的开头,在多行检索中,匹配一行的开头
  • $ 匹配字符串的结尾,在多行检索中,匹配一行的结尾

延伸1

根据以上说明,你一定理解了上述正则表达式所表达的含义,是不是很简单!

假设你对上述规则不满意,想增加一条规则,如下:

  • 首字母只能是大小写字母

很容易变更上述正则表达式如下:

var pattern = /^[a-zA-Z][a-zA-Z0-9_-]{3,15}$/;

给出测试结果如下:

var pattern = /^[a-zA-Z][a-zA-Z0-9_-]{3,15}$/;
pattern.test('ifat3') = true
pattern.test('Ifat3') = true
pattern.test('du42') = true
pattern.test('42du') = false
pattern.test('d42') = false
pattern.test('du42du42du42du421') = false
pattern.test('du42@') = false

测试代码

延伸2

如果允许中文的登录名,变更规则,如下:

  • 首字母只能是大小写字母或中文基本汉字
  • 其它位也可以包含中文基本汉字

给出如下正则表达式:

var pattern = /^[a-zA-Z\u4E00-\u9FA5][a-zA-Z0-9\u4E00-\u9FA5_-]{3,15}$/;

其中[\u4E00-\u9FA5]是汉字的正则匹配,包括基本汉字2万多个,其中\u4E00表示汉字“一”,具体请参见“汉字unicode编码范围”。

给出测试结果如下:

var pattern = /^[a-zA-Z\u4E00-\u9FA5][a-zA-Z0-9\u4E00-\u9FA5_-]{3,15}$/;
pattern.test('ifat3') = true
pattern.test('Ifat3') = true
pattern.test('毛三胖子') = true
pattern.test('42du') = false
pattern.test('d42') = false
pattern.test('du42du42du42du421') = false
pattern.test('du42@') = false

测试代码

根据以上内容,定义你自己的登录名正则表达式吧!

原文链接

相关文章

  • JavaScript中登录名的正则表达式及解析(0基础)

    简言 在JavaScript中,经常会用到正则表达式来进行模式匹配。例如,登录名验证,密码强度验证,字符串查找或替...

  • 最全正则表达式

    史上最全常用正则表达式 [JavaScript](javascript:void(0);) 5月14日 很多不太懂...

  • javascript正则

    原生JavaScript常用的正则表达式 //正整数 /^[0-9]*[1-9][0-9]*$/; //负整数 /...

  • 无标题文章

    #javascript基础 1. 字符串中**只有** ` "1"==true` **只有**`"0"==fal...

  • 正则表达式

    javascript 中的正则表达式。 在使用正则表达式的时候,总是要重新看一遍,感觉基础不牢,今天再看了慕课网正...

  • 正则表达式进一步学习

    界定符 用法:/[0-9]/,#[0-9]#说明:表示正则表达式的开始和结束,具体的由解析器决定告诉php解析器的...

  • Python数据解析的三种方式

    一,正则表达式解析 在爬虫中,下面两种方式用的多一些~ 大致用法: 二,Xpath解析 简介及安装 简介:XPat...

  • 学习笔记 | JavaScript基础(一)预解析

    JavaScript 代码是由浏览器中的 JavaScript 解析器来执行的,JavaScript 解析器在运行...

  • No.24 JavaScript预解析

    JavaScript 代码是由浏览器中的 JavaScript 解析器来执行的。JavaScript 解析器在运行...

  • JavaScript正则表达式

    JavaScript 正则表达式 @(笔记)[正则表达式] 第一章 课程简介 1-1 JS正则表达式简介及应用 课...

网友评论

    本文标题:JavaScript中登录名的正则表达式及解析(0基础)

    本文链接:https://www.haomeiwen.com/subject/wexpfftx.html