1.正则表达式(regular expression, RE)是一种字符模式,用于在查找过程中匹配指定的字符。
2.在大多数程序里,正则表达式都被置于两个正斜杠之间;例如/l[oO]ve/就是由正斜杠界定的正则表达式,它将匹配被查找的行中任何位置出现的相同模式。在正则表达式中,#元字符是最重要的概念。
 
#正则表达式分为:
正则表达式基本元字符 
正则表达式拓展元字符

元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。
No.1 正则表达式基本元字符
基本正则表达式元字符 
元字符
示例                     功能                       示例
^                       行首定位符                  ^love 
$                       行尾定位符                  love$ 
.                       匹配单个字符                 l..e  
*                       匹配前导符(*前的都算)0到多次   ab*love 
.*                      匹配任意多个字符(贪婪匹配)
[]                      匹配方括号中任意一个字符      [lL]ove
[ - ]                   匹配指定范围内的一个字符      [a-z0-9]ove             
[^]                     匹配不在指定组里的字符        [^a-z0-9]ove
\                       用来转义元字符               love\.
\<                      词首定位符                  \<love
\>                      词尾定位符                  love\>
\(\)                    匹配后的标签
No.2正则表达式拓展元字符
扩展正则表达式元字符             功能                  示例
+                       匹配一次或多次前导字符        [a-z]+ove
?                       匹配零次或一次前导字符        lo?ve
a|b                     匹配a或b                   love|hate
x{m}                    字符x重复m次               o{5}
x{m,}                   字符x重复至少m次            o{5,}
x{m,n}                  字符x重复m到n次             o{5,10}
()                      字符组                     ov+ (ov)+
扩展内容:
自带的特殊字符正则表达式
1) [[:alpha:]]   匹配任何字母,无论大小写
2) [[:alnum:]]  匹配任何字母,无论大小写,还匹配数字0~9
3)   [[:blank:]]    匹配空格和制表符
4)   [[:digit:]]      匹配数字0~9
5)   [[:upper:]]    匹配大写字母
6)   [[:lower:]]     匹配小写字母
7) [[:punct:]]    匹配标点符号
8) [[:print:]]      匹配可打印字符

\w 匹配字母或数字或下划线或汉字 等价于 '[^A-Za-z0-9_]'。(能不能匹配汉字要视你的操作系统和你的应用环境而定)

\s 匹配任意的空白符  (包含水平制表符)

\d 匹配数字

\b 匹配单词的开始或结束
正则判断
[root@linux-server ~]# num1=1 
#运用正则,判断需要[[ ]]
[root@linux-server ~]# [[ $num1 =~ ^[0-9]+$ ]] && echo "yes" || echo "no"      匹配
yes
#注意:^在[]内表示取反,^在[]外表示以什么开头
[root@linux-server ~]# num3=1b1 
[root@linux-server ~]# [[ $num3 =~ ^[0-9]+$ ]] && echo "yes" || echo "no"
no

[root@linux-server ~]# num=1.6
[root@linux-server ~]# [[ $num =~ ^[0-9]\.[0-9]+$ || $num =~ ^[0-9]+$ ]] && echo "yes" || echo "no"       //输入的只能是数字(包括小数)
yes