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

^开头与结尾$
服务器君一共花费了421.735 ms进行了8次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

有的时候,我们想要匹配的字符串必须位于全部文本的首位,比如说 XML 文件的声明“<?xml version="1.0" encoding="UTF-8" ?>”;有的时候,需要匹配的字符串位于全部文本的末尾,比如</html>。对于这种匹配,上面介绍的单词边界匹配就无能为力了。

匹配文本首

在正则表达式中,可以在 匹配模式 的第一个字符前添加 “^”,以匹配 满足模式且位于全部文本之首的字符串。可以将它的匹配方式理解成这样:

  1. 假设不存在“^”,进行一个正常匹配,将所有匹配的文本保存到匹配集合中;
  2. 在匹配集合中寻找位于 所搜索的文本 首位的匹配;
  3. 从匹配集合中删除其他匹配,仅保留该匹配。

正则如下:

^(\s*nowamagic\d?\.net)

效果演示

nowamagic.net and nowamagic2.net are websites.

本例代码

function reg_replace()
{
	var test = document.getElementById("test");
	var regex = /^(\s*nowamagic\d?\.net)/g;
	test.innerHTML = test.innerHTML.replace(regex,"<span style='background-color:orange'>$1</span>");
}

我们进行文本边界匹配时,通常还需要添加对空字符的处理所以需要在字符串前加上\s*

按照之前说的,它的匹配过程是这样:

  1. 假设匹配模式是 nowamagic\d?\.net,对文本进行匹配。
  2. 一共找到 2 个符合模式的文本:第一行 和 第二行的 nowamagic.net, 及 nowamagic2.net
  3. 从所有匹配的文本中筛选出位于文本首位的匹配文本:即第一行的 nowamagic.net,删除所有其他匹配。

匹配文本末

有匹配文本首的语法,自然有匹配文本末的语法。

在正则表达式中,可以在 匹配模式 的最后一个字符后添加 “$”,以匹配 满足模式且位于全部文本之末的字符串。

它的匹配方式 与 匹配文本首“^”相似,这里就不再详细说明了,只给出一个例子:

正则如下:

(nowamagic\d?\.net\s*)$

效果演示

nowamagic.net and nowamagic2.net are both names nowamagic.net

回顾下之前介绍的,可以看出:“\b”和“\B”是对 匹配模式(表达式) 中某个字符出现的进行位置(单词首位还是末位)进行限制。“^”和“$” 是对 整个待搜索文本 的 匹配模式(表达式) 出现位置(文本首位还是文本末位)进行限制。它们的关系是一小一大。

延伸阅读

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

  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/1072,欢迎访问原出处。

不打个分吗?

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

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

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

大家都在看

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

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

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

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

《软件随想录:程序员部落酋长Joel谈软件》 Joel Spolsky (作者), 阮一峰 (译者)

《软件随想录:程序员部落酋长Joel谈软件》是一部关于软件技术、人才、创业和企业管理的随想文集,作者以诙谐幽默的笔触将自己在软件行业的亲身感悟娓娓道来,观点新颖独特,内容简洁实用。全书分为 36讲,每一讲都是一个独立的专题。《软件随想录:程序员部落酋长Joel谈软件》从不同侧面满足了软件开发人员、设计人员、管理人员及从事软件相关工作的人员的学习与工作需要。

更多计算机宝库...