简言
在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{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-Zu4E00-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
依据以上内容,定义你本身的登录名正则表达式吧!