`
hongan
  • 浏览: 177045 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

Javascript 正则表达式的定位符

阅读更多

转自:http://www.wang48.com/jishubaodianview/?jsd_id=12984

定位符

到现在为止,所看到的示例都只考虑查找任何地方出现的章节标题。出现的任何一个字符串 'Chapter' 后跟一个空格和一个数字可能是一个真正的章节标题,也可能是对其他章节的交叉引用。由于真正的章节标题总是出现在一行的开始,因此需要设计一个方法只查找标题而不查找交叉引用。

定位符提供了这个功能。定位符可以将一个正则表达式固定在一行的开始或结束。也可以创建只在单词内或只在单词的开始或结尾处出现的正则表达式。下表包含了正则表达式及其含义的列表:

字符描述
^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^ 也匹配 '\\n' 或 '\\r' 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$ 也匹配 '\\n' 或 '\\r' 之前的位置。
\\b 匹配一个单词边界,也就是指单词和空格间的位置。
\\B 匹配非单词边界。

 

不能对定位符使用限定符。因为在一个换行符或者单词边界的前面或后面不会有连续多个位置,因此诸如 '^*' 的表达式是不允许的。

要匹配一行文字开始位置的文字,请在正则表达式的开始处使用 '^' 字符。不要把 '^' 的这个语法与其在括号表达式中的语法弄混。它们的语法根本不同。

要匹配一行文字结束位置的文字,请在正则表达式的结束处使用 '$' 字符。

要在查找章节标题时使用定位符,下面的 JScript 正则表达式将匹配位于一行的开始处最多有两个数字的章节标题:

/^Chapter [1-9][0-9]{0,1}/

VBScript 中相同功能的正则表达式如下:

"^Chapter [1-9][0-9]{0,1}"

一个真正的章节标题不仅出现在一行的开始,而且这一行中也仅有这一个内容,因此,它必然也位于一行的结束。下面的表达式确保所指定的匹配只匹配章节而不会匹配交叉引用。它是通过创建一个只匹配一行文字的开始和结束位置的正则表达式来实现的。

/^Chapter [1-9][0-9]{0,1}$/

对 VBScript 则使用:

"^Chapter [1-9][0-9]{0,1}$"

匹配单词边界有少许不同,但却给正则表达式增加了一个非常重要的功能。单词边界就是单词和空格之间的位置。非单词边界就是其他任何位置。下面的 JScript 表达式将匹配单词 'Chapter' 的前三个字符,因为它们出现在单词边界后:

/\\bCha/

对 VBScript 为:

"\\bCha"

这里 '\\b' 操作符的位置很关键。如果它位于要匹配的字符串的开始,则将查找位于单词开头处的匹配;如果它位于改字符串的末尾,则查找位于单词结束处的匹配。例如,下面的表达式将匹配单词 'Chapter' 中的 'ter',因为它出现在单词边界之前:

/ter\\b/

以及

"ter\\b"

下面的表达式将匹配 'apt',因为它位于 'Chapter' 中间,但不会匹配 'aptitude' 中的'apt':

/\\Bapt/

以及

"\\Bapt"

这是因为在单词 'Chapter' 中 'apt' 出现在非单词边界位置,而在单词 'aptitude' 中位于单词边界位置。非单词边界操作符的位置不重要,因为匹配与一个单词的开头或结尾无关。

分享到:
评论

相关推荐

    JavaScript正则表达式迷你书

    《JavaScript正则表达式迷你书》是一本关于JavaScript正则表达式的专业书籍,正则表达式是处理字符串的强大工具,广泛应用于编程语言中的文本处理。本书从字符匹配、位置匹配、括号的作用、回溯法原理、拆分、构建和...

    javascript正则表达式学习笔记

    这篇学习笔记将深入探讨JavaScript正则表达式的概念、语法和实际应用。 一、正则表达式基础 1. 创建正则表达式: - 字面量表示法:`/pattern/flags` - 构造函数:`new RegExp('pattern', 'flags')` 2. 常见的...

    精通正则表达式(第三版)简体中文版

    - **JavaScript中的正则表达式**:JavaScript的正则表达式对象提供了丰富的功能,包括全局匹配、忽略大小写等选项。 - **.NET框架中的正则表达式**:通过System.Text.RegularExpressions命名空间提供支持。 #### 六...

    正则表达式教程合集(各种语言的,超全)

    5. 定位符:`^`匹配行首,`$`匹配行尾。 6. 分组:使用圆括号`()`定义一个捕获组,可以用于反向引用或保存匹配结果。 正则表达式还支持更多的高级特性,如非捕获组 `(?:...)`、选择 `(a|b)`、重复 `{n}`、`{n,}`、`...

    JavaScript正则表达式使用详解

    JavaScript正则表达式是一种强大的文本处理工具,广泛应用于各种编程环境,包括JavaScript这样的客户端脚本语言。它允许开发者通过特定的模式来匹配、查找、替换文本。正则表达式的核心在于其元字符和定位符。 元...

    javascript正则表达式使用详解

    通过结合这些元字符和定位符,开发者可以构建出复杂的正则表达式,以满足各种复杂的文本匹配需求。在JavaScript中,正则表达式是通过`RegExp`对象或者直接在字符串中使用正则表达式语法来创建和使用的。掌握正则...

    正则表达式素材5

    7. **正则表达式模式修饰符**:如i(忽略大小写)、g(全局匹配)、m(多行模式)等,可以改变正则表达式的匹配行为。 8. **回溯**:理解正则表达式引擎如何处理回溯对于优化复杂正则表达式至关重要,避免不必要的...

    Javascript经典正则表达式

    2. **处理DOM模型**:通过正则表达式定位到DOM树中的特定元素。例如,可以通过匹配ID中的特定字符来查找或操作DOM节点。 3. **编程逻辑**:直接应用于程序逻辑中,进行字符串的搜索与替换。 #### 二、示例分析 1. ...

    正则表达式文本编辑器

    2. 动态反馈:通过JavaScript或其他脚本语言,可以实时展示正则表达式的匹配结果,帮助用户即时调整表达式。 3. 教程与帮助:HTML环境便于集成教程和在线帮助,指导用户学习和掌握正则表达式。 总结,正则表达式...

    javascript 正则表达式教程

    JavaScript正则表达式是编程语言JavaScript中的一个重要组成部分,它用于处理文本模式匹配和字符串操作。在JavaScript中,正则表达式常用于数据验证、搜索与替换、字符串分割等任务,对于提升程序的灵活性和效率至关...

    史上最好的正则表达式教程.pdf

    14. 在线工具,如JavaScript在线正则测试器和.Net正则表达式测试工具,可以帮助开发者测试和学习正则表达式。 正则表达式的学习不应该一蹴而就,而是需要持续不断的实践和练习,以达到熟练掌握。同时,参考资料和...

    正则表达式-随心查找随心所用

    定位符在正则表达式中用于指定模式的位置,`^`表示匹配开头,`$`表示匹配结尾,`\b`匹配边界,`\B`匹配非边界。这些定位符使得正则表达式能更精确地定位特定的字符串段落,例如`/^foo/`只匹配以"foo"开头的字符串。 ...

    精通正则表达式(英文版+中文目录)

    在实践中,书中会讨论如何在各种编程语言中使用正则表达式,如JavaScript、Python、Java等,并给出具体的示例代码,帮助读者理解如何在实际开发中应用正则表达式。此外,书中还会讲解正则表达式引擎的工作原理,这...

    正则表达式全集(内有文档chm格式与实例)

    1. 定位符:"^"表示行首,"$"表示行尾,"\\b"表示单词边界。 2. 量词:"{n}"表示n次,"{n,m}"表示n到m次,"{n,}"表示至少n次。 3. 选择符:"|", 表示或操作,例如"a|b"匹配"a"或"b"。 4. 分组:"( )"用于创建子模式...

    一款可调式生成正则表达式的软件!

    正则表达式的基本元素包括字符集、量词、定位符、分组与引用、选择和反向引用等。例如,"."匹配任意单个字符,"*"表示前面的字符可以出现零次或多次,"^"代表行首,"$"表示行尾,"\d"代表数字,"[abc]"表示字符集,...

Global site tag (gtag.js) - Google Analytics