加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式笔记1

发布时间:2020-12-14 02:24:29 所属栏目:百科 来源:网络整理
导读:什么是正则表达式? ?正则表达式是用来进行文本处理的技术,是语言无关的,在几乎所有语言中都有实现。 ?一个正则表达式就是由普通字符以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模
什么是正则表达式?
?正则表达式是用来进行文本处理的技术,是语言无关的,在几乎所有语言中都有实现。
?一个正则表达式就是由普通字符以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
?就像通配符“*.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所匹配的内容。我们在正则表达式内括号里写的内容会被认为是子正则表达式,所匹配的结果也会被记录下来供后面使用。我们暂且不去理会这个特性。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读