您的位置:首页 > 编程语言 > PHP开发

正则入门:匹配一个或多个字符

2011-02-02 00:00 1876 查看
应该了解,上面所介绍的不管简单也好,复杂也好,都只是匹配单个字符,如果需要匹配一个很长的字符串,而组成这个字符串的每个字符都比较复杂(没有诸如\d 这样的简写方式),那么,可以想象,一个表达式会多么复杂。

回顾一下匹配 Web 中颜色的例子,我们的正则表达式写法是这样的:“#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]”。应该想到,如果有办法确定匹配的单个字符的个数就好了。这里将讨论使用正则表达式来进行多个字符的匹配。

正则表达式中,可以在 单个字符(比如“j”)、字符组(比如“[abcde]”)、特定字符类型(比如“\d”)、单个任意字符(即“.”) 后面加“+”,来表示匹配一个或多个(换言之,至少一个)字符组成的字符串。

拿上面的例子来说,对于 “n+” 有:

效果演示

正则如下:

n+


www.nowamagic.net

www.google.com

www.nowamagic.mmc.org

本例代码

function reg_replace()
{
var test = document.getElementById("test");
aim = "n+";
var regex = new RegExp("("+aim+")","g");
test.innerHTML = test.innerHTML.replace(regex,"<span style='background-color:orange'>$1</span>");
}

我们现在考虑一个实际的例子,我的电子邮件的写法:nowamagic@163.com ,如果没有本章的知识,匹配邮件地址是不可能的,因为,我们无法确定的知道邮件地址的长度。现在,如果我们要匹配这个邮件地址,结合之前的知识 和 本小节的新内容,很容易得出这样的表达式:\\w+@(\\w+\\.)+[a-z]{2,3}

nowamagic@163.com

nowamagic@google.com

www.nowamagic@org

www@nowamagic.org

前面说过:“-”只在字符组“[]”区间内才是一个元字符,在“[]”以外是普通字符。在此处,“.”在“[]”区间以外才是元字符,用以匹配任意单个字符,而在“[]”区间以内,它就变成了一个普通字符。所以,“[\w\.]”可以简写成“[\w.]”(写成“[\w\.]也不会出错”)。

延伸阅读

此文章所在专题列表如下:

什么是正则表达式?

正则入门:匹配固定的单个字符

正则入门:匹配任意的单个字符

正则入门:字符组的使用

正则入门:在字符组中使用字符区间

正则入门:反义字符组的使用

正则入门:匹配空字符

正则入门:匹配一个或多个字符

正则入门:匹配零个或多个字符

正则入门:匹配零个或一个字符串

正则入门:匹配固定数目的字符

正则入门:匹配区间内数目的字符

正则入门:贪婪匹配

正则入门:惰性匹配

正则入门:两个匹配模式

正则入门:匹配单词边界

正则入门:边界的定义与相对性

正则入门:匹配非单词边界

正则入门:匹配文本首和尾

正则入门:子模式

正则入门:“或”匹配

正则入门:后向引用文本替换

正则入门:非获取匹配

正则总结:JavaScript中的正则表达式

正则总结:正则表达式在js中的高级应用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐