正则表达式笔记1

什么是正则表达式?
ß正则表达式是用来进行文本处理的技术,是语言无关的,在几乎所有语言中都有实现。
ß一个正则表达式就是由普通字符以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
ß就像通配符“*.jpg”,它是对字符串进行匹配的特殊字符串。
ß正则表达式是非常复杂的,不要希望一次都掌握,理解正则表达式能做什么(字符串的匹配、字符串的提取、字符串的替换),掌握常用的正则表达式用法,以后用到再查就行。
ß找工作的亮点。后面项目中的采集器、敏感词过滤、URLRewite也会涉及到正则表达式。

创建一个正则表达式
第一种方法:
var reg = /pattern/;
第二种方法:
var reg = new  RegExp('pattern');

exec方法
语法:
reg.exec(str);
其中str为要执行正则表达式的目标字符串。

<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>

上面的例子用正则里的test去匹配字符串里的test,
实在是很无聊,同样的任务用indexOf方法就可以完成了。
用正则,自然是要完成更强大的功能:

一片两片三四片,落尽正则全不见
上面的小标题翻译成正则就是{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} 是一个意思。


贪心与非贪心
人都是贪婪的,正则也是如此。
我们在例子reg = /c{3,4}/;str='ccccTest';的例子中已经看到了,能匹配四个的时候,正则绝对不会去匹配三个。
上面所介绍的所有的正则都是这样,只要在合法的情况下,它们会尽量多去匹配字符,这就叫做贪心模式。
如果我们希望正则尽量少地匹配字符,那么就可以在表示数字的符号后面加上一个?。
组成如下的形式:{n,}?, *?, +?, ??, {m,n}?


/^开头,结尾$/
^表示只匹配字符串的开头。
与^相反,$则只匹配字符串结尾的字符

.
‘.’会匹配字符串中除了换行符\n之外的所有字符

二选一,正则表达式中的或,|
b|c表示,匹配b或者c。


括号
reg = /^(b|c).+/;
str='bbs.blueidea.com';
execReg(reg,str);
这次的结果是整个串bbs.blueidea.com,加上上面的括号这后,这个正则的意思是,如果字符串的开头是b或者c,那么匹配开头的b或者c以及其后的所有的非换行字符。
会发现返回的结果后面多出来一个“,b“,这是()内的b|c所匹配的内容。我们在正则表达式内括号里写的内容会被认为是子正则表达式,所匹配的结果也会被记录下来供后面使用。我们暂且不去理会这个特性。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值