什么是正则表达式?
ß正则表达式是用来进行文本处理的技术,是语言无关的,在几乎所有语言中都有实现。
ß就像通配符“*.jpg”,它是对字符串进行匹配的特殊字符串。
ß找工作的亮点。后面项目中的采集器、敏感词过滤、URLRewite也会涉及到正则表达式。
<script type="text/javascript">
var reg = /test/;
var str = 'testString';
var result = reg.exec(str);
alert(result);
</script>
将会输出test,因为正则表达式reg会匹配str(‘testString’)中的’test’子字符串,并且将其返回。
<script type="text/javascript">
function execReg(reg,str){
var result = reg.exec(str);
alert(result);
}
var reg = /test/;
var str = 'testString';
execReg(reg,str);
</script>
一片两片三四片,落尽正则全不见
上面的小标题翻译成正则就是{1},{2},{3,4},{1,}。
c{n}
{1}表示一个的意思。
/c{1}/只能匹配一个c。
/c{2}/则会匹配两个连续的c。
以此类推,
/c{n}/则会匹配n个连续的c。
c{m,n}
c{3,4}的意思是,连续的3个c或者4个c。
c{n,}
c{1,}表示1个以上的c。
*,+,?
*表示0次或者多次,等同于{0,},即
c* 和 c{0,} 是一个意思。
+表示一次或者多次,等同于{1,},即
c+ 和 c{1,} 是一个意思。
最后,?表示0次或者1次,等同于{0,1},即
c? 和 c{0,1} 是一个意思。
@H_890_301@
贪心与非贪心
人都是贪婪的,正则也是如此。
我们在例子reg = /c{3,4}/;str='ccccTest';的例子中已经看到了,能匹配四个的时候,正则绝对不会去匹配三个。
上面所介绍的所有的正则都是这样,只要在合法的情况下,它们会尽量多去匹配字符,这就叫做贪心模式。
如果我们希望正则尽量少地匹配字符,那么就可以在表示数字的符号后面加上一个?。
组成如下的形式:{n,}?,*?,+?,??,{m,n}?
/^开头,结尾$/
^表示只匹配字符串的开头。
与^相反,$则只匹配字符串结尾的字符
点’.’
‘.’会匹配字符串中除了换行符\n之外的所有字符
二选一,正则表达式中的或,”|”
b|c表示,匹配b或者c。