知道这20个正则表达式,能让你少写1,000行代码
正则表达式,
一个十分古老而又强大的文本处理工具,
仅仅用一段非常简短
的表达式语句,
便能够快速实现一个非常复杂的业务逻辑。
熟练地掌握正则表达
式的话,能够使你的开发效率得到极大的提升。
正则表达式经常被用于字段或任意字符串的校验,
如下面这段校验基本日期
格式的
JavaScript
代码:
varreg
=
/^
(
\\d
{
1,4
})(
-
|
\\/
)(
\\d
{
1,2
})
\\2
(
\\d
{
1,2
})
$/
;
var r
=
fieldValue.match
(
reg
);
if
(
r
==
null
)
alert
(
'Date format error!'
);
下面是
技匠
整理的,在前端开发中经常使用到的
20
个正则表达式。
1 .
校验密码强度
密码的强度必须是包含大小写字母和数字的组合,
不能使用特殊字符,
长度
在
8-10
之间。
^
(
?
=
.*\\d
)(
?
=
.*
[
a-z
])(
?
=
.*
[
A-Z
])
.
{
8,10
}
$
2.
校验中文
字符串仅能是中文。
^
[
\\u4e00-\\u9fa5
]{
0,
}
$
3.
由数字、
26
个英文字母或下划线组成的字符串
^\\w+$
4.
校验
地址
同密码一样,下面是
地址合规性的正则检查语句。
[
\\w
!
#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*
@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?
.
校验身份证号码
下面是身份证号码的正则校验。
15
或
18
位。
15
位:
^
[
1-9
]
\\d
{
7
}((
0
\\d
)
|
(
1
[
0
-
2
]
))(([
0
|
1
|
2
]
\\d
)
|
3
[
0-1
])
\\d
{
3
}
$
18
位:
^
[
1-9
]
\\d
{
5
}[
1-9
]
\\d
{
3
}((
0
\\d
)
|
(
1
[
0
-
2
]
))(([
0
|
1
|
2
]
\\d
)
|
3
[
0-
1
])
\\d
{
3
}([
0-9
]
|
X
)
$
6.
校验日期
“
yyyy-mm-dd
“
格式的日期校验,已考虑平闰年。
^
(
?:
(
?
!
0000
)[
0-9
]{
4
}
-
(
?:
(
?:0
[
1-9
]
|
1
[
0-2
])
-
(
?:0
[
1-9
]
|
1
[
0-9
]
|
2
[
0-8
])
|
(
?:0
[
13-9
]
|
1
[
0-2
])
-
(
?:29
|
30
)
|
(
?:0
[
13578
]
|
1
[
02
])
-3
1
)
|
(
?:
[
0-9
]{
2
}(
?:0
[
48
]
|
[
2468
][
048
]
|
[
13579
][
26
])
|
(
?:0
[
48
]
|
[
2468
][
048
]
|
[
13579
][
26
])
00
)
-02-29
)
$
7.
校验金额
金额校验,精确到
2
位小数。
^
[
0-9
]
+
(
.
[
0-9
]{
2
})
?$
8.
校验手机号
下面是国内
13
、
15
、
18
开头的手机号正则表达式。(可根据目前国内收
集号扩展前两位开头号码)
^
(
13
[
0-9
]
|
14
[
5
|
7
]
|
15
[
0
|
1
|
2
|
3
|
5
|
6
|
7
|
8
|
9
]
|
18
[
0
|
1
|
2
|
3
|
5
|
6
|
7
|
8
|
9
])
\\d
{
8
}
$
9.
判断
IE
的版本
IE
目前还没被完全取代,很多页面还是需要做版本兼容,下面是
IE
版本检
查的表达式。
^.*MSIE
[
5-8
](
?:\\.
[
0-9
]
+
)
?
(
?
!
.*Trident\\/
[
5-9
]
\\.0
)
.*$
10.
校验
IP-v4
地址
IP4
正则语句。
\\b
(
?:
(
?:25
[
0-5
]
|
2
[
0-4
][
0-9
]
|
[
01
]
?
[
0-9
][
0-9
]
?
)
\\.
){
3
}(
?:25
[
0-5
]
|
2
[
0-4
][
0-9
]
|
[
01
]
?
[
0-9
][
0-9
]
?
)
\\b
11.
校验
IP-v6
地址
IP6
正则语句。
((
[
0
-
9a
-
fA
-
F]{
1
,
4
}
:
)
{
7
,
7
}[
0
-
9a
-
fA
-
F]{
1
,
4
}
|
(
[
0
-
9a
-
fA
-
F]{
1
,
4
}
:
)
{
1
,
7
}
:|
(
[
0
-
9a
-
fA
-
F]{
1
,
4
}
:
)
{
1
,
6
}
:
[
0
-
9a
-
fA
-
F]{
1
,
4
}
|
(
[
0
-
9a
-
fA
-
F]{
1
,
4
}
:
)
{
1
,
5
}
(
:
[
0
-
9a
-
fA
-
F]{
1
,
4
}
)
{
1
,
2
}
|
(
[
0
-
9a
-
fA
-
F]{
1
,
4
}
:
)
{
1
,
4
}
(
:
[
0
-
9a
-
fA
-
F]{
1
,
4
}
)
{
1
,
3
}
|
(
[
0
-
9a
-
fA
-
F]{
1
,
4
}
:
)
{
1
,
3
}
(
:
[
0
-
9a
-
fA
-
F]{
1
,
4
}
)
{
1
,
4
}
|
(
[
0
-
9a
-
fA
-
F]{
1
,
4
}
:
)
{
1
,
2
}
(
:
[
0
-
9a
-
f
A
-
F]{
1
,
4
}
)
{
1
,
5
}
|
[
0
-
9a
-
fA
-
F]{
1
,
4
}
:
((
:
[
0
-
9a
-
fA
-
F]{
1
,
4
}
)
{
1
,
6
}
)
|:
((
:
[
0
-
9a
-
fA
-
F]{
1
,
4
}
)
{
1
,
7
}
|:
)
|
fe80
:
(
:
[
0
-
9a
-
fA
-
F]{
0
,
4
}
)
{
0
,
4
}
%
[
0
-
9a
-
zA
-
Z]{
1
,
}
|::
(
ffff
(
:
0
{
1
,
4
}
)
{
0
,
1
}
:
)
{
0
,
1
}
((
25
[
0
-
5
]
|
(
2
[
0
-
4
]
|
1
{
0
,
1
}[
0
-
9
]
)
{
0
,
1
}[
0
-
9
]
)
\\.
)
{
3
,
3
}
(
25
[
0
-
5
]
|
(
2
[
0
-
4
]
|
1
{
0
,
1
}[
0
-
9
]
)
{
0
,
1
}[
0
-
9
]
)
|
(
[
0
-
9a
-
fA
-
F]{
1
,
4
}
:
)
{
1
,
4
}
:
((
25
[
0
-
5
]
|
(
2
[
0
-
4
]
|
1
{
0
,
1
}[
0
-
9
]
)
{
0
,
1
}[
0
-
9
]
)
\\.
)
{
3
,
3
}
(
25
[
0
-
5
]
|
(
2
[
0
-
4
]
|
1
{
0
,
1
}[
0
-
9
]
)
{
0
,
1
}[
0
-
9
]
))
12.
检查
URL
的前缀
应用开发中很多时候需要区分请求是
HTTPS
还是
HTTP
,通过下面的表达
式可以取出一个
url
的前缀然后再逻辑判断。
if
(
!
s.match
(
/^
[
a-zA-Z
]
+:\\/\\//
))
{
s
=
'http://'
+ s
;
}
13.
提取
URL
链接
下面的这个表达式可以筛选出一段文本中的
URL
。
^
(
f
|
ht
){
1
}(
tp
|
tps
)
:\\/\\/
([
\\w-
]
+\\.
)
+
[
\\w-
]
+
(
\\/
[
\\w- ./?
%
&=
]
*
)
?
接
提取
html
中的超链接。
(
<
a\\s*
(
?
!
.*\\brel
=
)[
^
>
]
*
)(
href
=
"https?:\\/\\/)
((
?!
(
?:
(
?:
w
ww\\.
)
?
'.implode
(
'
|
(
?:
www\\.
)
?
'
,
$follow_list
)
.'
))
[^"
]
+
)
"
((
?
!
.*\\brel
=
)[
^
>
]
*
)(
?:
[
^
>
]
*
)
>
18.
查找
CSS
属性
通过下面的表达式,可以搜索到相匹配的
CSS
属性。
^\\s*
[
a-zA-Z\\-
]
+\\s*
[
:
]{
1
}
\\s
[
a-zA-Z0-9\\s.
#]+[;]{1}
19.
抽取注释
如果你需要移除
HMTL
中的注释,可以使用如下的表达式。
<!
--
(
.*?
)
--
>
20.
匹配
HTML
标签
通过下面的表达式可以匹配出
HTML
中的标签属性。
<
\\/?\\w+
((
\\s+\\w+
(
\\s*
=
\\s*
(
?:
".*?"
|
'.*?'
|
[
\\^'"
>
\\s
]
+
))
?
)
+\\s*
|
\\s*
)
\\/?
>