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

比如匹配阿拉伯数字的写法是[0-9]
服务器君一共花费了1632.778 ms进行了6次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

现在假设我们需要匹配一组文件名,它们的名称为 city0.jpg、city1.jpg...city9.jpg。根据前面介绍的内容,我们很容易写出这样的表达式:“city[0123456789].jpg”。没错!这样写法的确可以达到我们要的效果。如果说写 10 个阿拉伯数字你觉得并不困难,那么如果要匹配这样的文件名呢?a_1.jpg、b_1.jpg、c_1.jpg...z_1.jpg。这次,你的表达式变成这样了:“[abcdefghijklmnopqrstuvwxyz]_1.jpg”,哇!看着就难受。

正则表达式提供了字符区间来简化这一写法,它的语法是:“起始字符-结束字符”。对于上面匹配阿拉伯数字的例子,它的写法是[0-9]。

不一定非要将匹配写成“[0-9]”,完全可以根据需要写成“[0-3]”,它将仅匹配“0,1,2,3”这个区间。起始字符 和 结束字符,依据的是它的 ASCⅡ值的大小,即是说,将会匹配其 ASCⅡ码位于 起始字符 和 结束字符 的 ASCⅡ之间的所有字符(包含起始、结束字符)。另外,如果起始字符的 ASCⅡ值大于结束字符的 ASCⅡ值,例如,如果你写成“[3-0]”,则会出错,导致匹配失败。

效果演示

正则如下:

nowamagic[0-3]....

www.nowamagic1.net

www.nowamagic2.com

www.nowamagic3.org

www.nowamagic1.net

www.nowamagic2.com

www.nowamagic3.org

本例代码

<script type="text/javascript">
function reg_replace()
{
	var test = document.getElementById("test");
	regex = new RegExp("nowamagic[0-3]....","g");
	test.innerHTML = test.innerHTML.replace(regex,"<span style='background-color:orange'>nowamagic.xxx</span>");
}

function reg_split()
{	
	var test = document.getElementById("split");
	regex = new RegExp("nowamagic[0-3]....","g");
	test.innerHTML = test.innerHTML.split(regex);
}
</script>

如果要在字符组(“[”“]”内)中匹配“-”,需要使用转义符,写法是“-”;而在“[”“]”以外,“-”变成了一个普通字符,无需再进行转义。

同样的道理,我们可以写出“[a-z]”来匹配所有的小写字母,“[A-Z]”匹配所有的大写字母,这里就不再举例子了。

现在假设需要在 HTML 中匹配所有的 RGB 颜色,我们知道,在 Web 中,颜色通常表示为诸如“#FF00CC”这样的值,那么结合上面讲述的内容,我们可以像这样使用匹配:

BGCOLOR="#336633",正则表达式#[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]

延伸阅读

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

  1. 什么是正则表达式?
  2. 正则入门:匹配固定的单个字符
  3. 正则入门:匹配任意的单个字符
  4. 正则入门:字符组的使用
  5. 正则入门:在字符组中使用字符区间
  6. 正则入门:反义字符组的使用
  7. 正则入门:匹配空字符
  8. 正则入门:匹配一个或多个字符
  9. 正则入门:匹配零个或多个字符
  10. 正则入门:匹配零个或一个字符串
  11. 正则入门:匹配固定数目的字符
  12. 正则入门:匹配区间内数目的字符
  13. 正则入门:贪婪匹配
  14. 正则入门:惰性匹配
  15. 正则入门:两个匹配模式
  16. 正则入门:匹配单词边界
  17. 正则入门:边界的定义与相对性
  18. 正则入门:匹配非单词边界
  19. 正则入门:匹配文本首和尾
  20. 正则入门:子模式
  21. 正则入门:“或”匹配
  22. 正则入门:后向引用文本替换
  23. 正则入门:非获取匹配
  24. 正则总结:JavaScript中的正则表达式
  25. 正则总结:正则表达式在js中的高级应用

本文地址:http://www.nowamagic.net/librarys/veda/detail/1023,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/1023

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《大话设计模式》 程杰 (作者)

《大话设计模式》通篇都是以情景对话的形式,用多个小故事或编程示例来组织讲解GoF(设计模式的经典名著——Design Patterns: Elements of Reusable Object-Oriented Software,中译本名为《设计模式——可复用面向对象软件的基础》的四位作者Erich Gamma、Richard Helm、Ralph Johnson,以及JohnVlissides,这四人常被称为GangofFour,即四人组,简称GoF)总结的23个设计模式。本书共分为29章。其中,第1、3、4、5章着重讲解了面向对象的意义、好处以及几个重要的设计原则;第2章,以及第6到第28章详细讲解了23个设计模式;第29章是对设计模式的全面总结。

更多计算机宝库...