正则表达式
进阶
建一个14.正则表达式 HTML文件
常用的正则表达式:
建一个15.用户注册 HTML文件
建一个17.Home主页 HTML文件
正则表达式
正则表达式是匹配字符串的强大武器。它的设计理念是用描述性的语言定义字符串的规则。我们认为符合规则的字符串是匹配的,否则字符串是非法的。
因此,我们判断字符串是否合法Email的方法是:
-
创建匹配Email正则表达式;
-
用这种正则表达式来匹配用户的输入来判断它是否合法。
因为正则表达式也是用字符串表示的,所以首先要知道如何用字符来描述字符。
在正则表达式中,如果直接给出字符,则准确匹配。\d
可以匹配一个数字,\w
可以匹配一个字母或数字,所以:
-
'00\d'
可以匹配'007'
,但无法匹配'00A'
; -
'\d\d\d'
可以匹配'010'
; -
'\w\w'
可以匹配'js'
;
.
任何字符都可以匹配,所以:
'js.'
可以匹配'jsp'
、'jss'
、'js!'
等等。
在正则表达式中,应匹配变长的字符*
使用任何字符(包括0个)
表示至少一个字符,用?
表示0个或1个字符,使用{n}
用n个字符{n,m}
表示n-m个字符:
让我们复杂的例子:\d{3}\s \d{3,8}
。
让我们从左到右解释一下:
-
\d{3}
表示匹配三个数字,例如'010'
; -
\s
可以匹配一个空间(也包括Tab等空白符),所以\s
至少有一个空间,比如匹配' '
,'\t\t'
等; -
\d{3,8}
例如,表示3-8个数字,'1234567'
。
综上所述,上述正则表达式可以与任何空间隔开的带区号的电话号码相匹配。
如果要匹配'010-12345'
这样的号码呢?'-'
在正则表达式中使用特殊字符'\'
因此,上述正则是\d{3}\-\d{3,8}
。
但是,还是无法匹配'010 - 12345'
,因为有空间。因此,我们需要更复杂的匹配方法。
进阶
为了更准确地匹配,可以使用[]
例如:
-
[0-9a-zA-Z\_]
可匹配数字、字母或下划线; -
[0-9a-zA-Z\_]
至少可以匹配由一个数字、字母或下划线组成的字符串,如'a100'
,'0_Z'
,'js2015'
等等; -
[a-zA-Z\_\$][0-9a-zA-Z\_\$]*
可与字母或下划线相匹配,$开头,接任何一个,由一个数字、字母或下划线,$组成的字符串,也就是JavaScript允许变量名; -
[a-zA-Z\_\$][0-9a-zA-Z\_\$]{0, 19}
变量的长度是1-20个字符(前一个字符) 最多19个字符)。
A|B
A或者可以匹配B,所以(J|j)ava(S|s)cript
可以匹配'JavaScript'
、'Javascript'
、'javaScript'
或者'javascript'
。
^
表示行的开头,^\d
必须从数字开始。
$
表示行的结束,\d$
表示必须以数字结束。
你可能注意到了,js
也可以匹配'jsp'
,但是加上^js$
成为整行匹配,只能匹配'js'
了。
建一个14.正则表达式 HTML文件
常用的正则表达式:
- ^[a-zA-Z0-9_-] @[a-zA-Z0-9_-] (\.[a-zA-Z0-9_-] ) $
- ^1(3[0-9]|5[0-3,5-9]|7[1-3,5-8]|8[0-9])\d{8}$
- ^[1-9]\d{5}(18|19|20|(3\d))\d(0[1-9]|(1[0-2])([0-2][1-9]|10|20|30|31)\d{3}[0-9Xx]$
- ^.*(?=.(6)(=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*?]).*$