您现在的位置:首页 >> 前端 >> 内容

##正则表达式概述##

时间:2017/3/28 9:55:00 点击:

  核心提示:##正则表达式概述##。正则表达式是由普通字符和一些无字符组成的文字模式,他可以用于匹配不同的字符串。下面就对一些常用的模式做一下叙述:在 js 中,我们可以用这样的方式创建一个新的正则表达式规则;v...

##正则表达式概述##。正则表达式是由普通字符和一些无字符组成的文字模式,他可以用于匹配不同的字符串。下面就对一些常用的模式做一下叙述:

在 js 中,我们可以用这样的方式创建一个新的正则表达式规则;

var reg = new RegExp('');

普通匹配

我们所需要做的就是在‘’里面填写相应的内容以匹配字符串。比如,我们在里面填写‘abc’这代表匹配源字符串中的‘abc’,当源字符串为“aaabc”,”abc”,”ddabcc”均可以匹配到。这种匹配类似于Java中的contains匹配。如果是匹配一些特殊符号,就必须加入转义符号才可用匹配成功。比如‘\?’可以匹配源字符串中的‘?’。
js中正则表达式的特殊符号有:! $ ^ * + = | . ? \ / ( ) [ ] { }
匹配以上特殊符号需加转义字符‘/’.

中括号匹配(匹配单个字符)

在js中,我们也可以使用中括号进行匹配。在’‘里面输入[ab].中括号可以理解为或是关系。当源文件中有’a’ ‘b’ ‘ab’ 均可以匹配成功.也可以用’-‘来限定范围。例如[a-z]匹配所有小写字符,常用的限定范围有以下几种:
- [a-z] //匹配所有小写字符
- [A-Z] // 匹配所有大写字符
- [1-9] // 匹配所有数字
‘^’ 的意思是非,也就是匹配相反的意思.例如[^abc]匹配的是不包含’a’ ‘b’ ‘c’ 或者 ‘abc’其他所有组合的源字符串。
下面有一些常用的通用匹配

. (匹配除了换行符和其他Unicode行终止符之外的所有字符) \w (匹配所有ASCII单子字符,相当于[a-zA-Z0-9] 写的时候注意转义’\w’) \W (同上面相反,相当于[^a-zA-Z0-9] ) \s (匹配任何Unicode空白符) \S (同上面相反) \d (匹配数字,相当于[0-9]) \D (同上面相反)

中括号匹配(匹配多个字符)

虽然上面的中括号匹配已经可以匹配所有的字符串,但都是单独匹配的。比如[a]可以匹配到所有包含a的字符串。但这只是单独的。如果我们要匹配包含’ab‘的字符串,用一个[a]就无法完成任务(ps:包含a的字符串和包含ab的字符串不是一个东西,’ac’ ‘ad’ ‘abc’ 可以说是包含a的字符串,但只有’abc’才是包含’ab’的字符串)。故,我们需要用[a][b]来匹配包含’ab’的字符串。但这是不合理的。所以我们需要用其他方法来匹配重复项。在正则表达式中,我们可以使用大括号来匹配次数,下面是一些常用的匹配:

{n} (匹配前一项n次,例如:ab{2},可以匹配’abb’,不能匹配’ab’或者’a’.ps:前一项指的是大括号前面的字符,上例中指的是字符’b’,如果是[ab]{2}代表源字符串中有’aa’ ‘ab’ ‘bb’即可匹配成功) {n,} (匹配前一项至少n次,最多不限) {n,m} (匹配前一项至少n次,最多m次。例如:ab{1,2},可以匹配’ab’ ‘abb’但无法匹配’abbb’) ? (匹配前一项0次或1次,相当于{0,1}) ‘+’ (匹配前一项至少1次,相当于{1,}) ‘*’(匹配前一项0次或者多次,相当于{0,})

特殊

定位符

前面我们提到’^’的用处,它代表非的意思,但是这是写在中括号表达式里面的,如果没有中括号表达式,它表示定位符。例如:’^a’代表以字符’a’开头的字符串。比如’aa’,’ab’.’^ab’就是代表由’ab’开头的字符串。下面是一些常用的定位符

^ (匹配字符串的开头,例如’^abd’可匹配’abdaaa’) (匹配字符串的结尾,例如′abd$’可匹配’aaaabd’) \b (匹配一个词的边界,也就是单词和空格之间的位置,英文用的很多) \B (和上面相反)

作者:网络 来源:dn940425的博