正则入门:匹配一个或多个字符
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+” 有:
www.nowamagic.net
www.google.com
www.nowamagic.mmc.org
我们现在考虑一个实际的例子,我的电子邮件的写法: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中的高级应用
回顾一下匹配 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中的高级应用
相关文章推荐
- 正则表达式 匹配至少有一个非空白字符并且不超过指定长度
- 正则表达式 匹配至少有一个非空白字符并且不超过指定长度
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配
- 正则表达式 入门 -- 简单字符匹配、元字符
- 正则入门:匹配零个或一个字符串
- 使用“正则表达式”,匹配任意一个字符(中文,英文和标点或特殊字符)
- 正则入门:匹配固定数目的字符
- 正则入门:匹配区间内数目的字符
- 简单入门正则表达式 - 第四章 单字符的匹配
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字
- 正则入门:匹配任意的单个字符
- 正则表达式入门(六)匹配unicode和其他字符
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字
- 贡献一个在匹配字符串前后插入字符的js正则表达式
- 简单入门正则表达式 - 第五章 多字符的匹配
- 正则入门:匹配空字符
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。
- 正则入门:匹配零个或多个字符
- 正则入门:匹配固定的单个字符
- 正则表达式匹配 任意字符和空格的一个简便方式?