正则学习-为了所需特殊字符串的匹配和截取
注:请看完上一章再看本章
例二:匹配一个数字(该例取于javascript精粹)
var parse_number = /^-?\d+(?:\.\d*)?(?:e[+\-]?\d+)?$/i;
var number1 = 123.1e-3;
var number2 = 123.1.e-3;
parse_number.test(number1); //true
parse_number.test(number2); //false
首先确定数字匹配逻辑,开头可能有正负号,接着是数字,可能为小数点加上数字,可能有e,e后面有+或者-,再有数字。
^
匹配字符串开始
$
匹配字符串结尾
-?
匹配-字符,?表示可有可无
\d+
\d表示一个数学字符,+表示匹配一次或者多次
(?:\.\d*)? 非捕获型可选分组
\.转义为.字符,
\d*表示匹配0次以上数学字符.
(?:e[+\-]?\d+)? 非捕获型可选分组
e匹配开头,
[+\-]?表示匹配+或-字符,?表示可无,
\d+表示匹配一次以上数学字符。
i
表示匹配大小写
总结:其实这个选取的匹配并不完全匹配数字逻辑。
小知识:
1.标识符 i匹配大小写/g匹配全局(可以多次匹配)/m多行匹配,
2.特殊字符 \ / [ ] ( ) { } ? + * . ^ $ - | 若要为字符则用\进行转义,
3. '.'匹配行结束符外的所有字符,
4.\d = [0-9], \D = [^0-9], 大小写都是相反 ,\s匹配空白符
例三,匹配首尾空白符
var regexp_blank = /^\s+|\s+$/g;
var str = " a a ";
str.replace(regexp_blank, '');// "a a"
^
匹配行首
\s+
匹配一次以上的空白符
|
或者
$
匹配行位
g
匹配全局(多个地方)
总结:
乍一看我也没搞懂 \s+|\s+ 是个什么意思,匹配空白或空白?
原来是 ^\s+|\s|$ ,意为匹配行首空白一次以上或匹配行尾空白一次以上。
初学乍到,不懂的还有很多。先把握大方向,再理清细节吧。
知识点:
1.^匹配文本开头,$匹配文本结尾,
2./^[a-z]/只匹配字母为首的行,/[a-z]$/只匹配字母结尾的行