`
小嘴冰凉
  • 浏览: 456926 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JS中match、replace方法中使用正则表达式

    博客分类:
  • js
阅读更多
正则表达式由来已久,查找替换功能非常强大,但模板难记复杂。 JavaScript中String对象的match()、replace()这2个方法都要使用正则表达式的模板。当模板内容与字符串不相匹配时,match()返回null,replace()返回原字符串。

正则表达式的模板对象
//标准写法 regexp = new RegExp(pattern[, flag]); pattern: 模板的用法是关键,也是本章的主要内容。 flag: "i"(ignore)、"g"(global)、"m"(multiline)的组合 i-忽略大小写,g-反复检索,m-多行检索flag中没有g时,返回字符串,有g时返回字符串数组var reg = new RegExp("飞雪","g"); var str = "风雨送春归飞雪迎春到,飞雪连天向天横"; var xx = str.(str.match(reg)); //xx的结果: xx[0]="飞雪" alert(xx); // xx[1]="飞雪"//常用写法 regexp = new RegExp(/pattern /[flag]); //去掉引号逗号改用“/”ar reg = new RegExp(/飞雪/g); var str = "风雨送春归飞雪迎春到,飞雪连天向天横"; var xx = str.(str.match(reg)); //xx的结果: xx[0]="飞雪" alert(xx); // xx[1]="飞雪"//省略写法 string.match(/pattern/flag);整个模板对象省略,让JavaScript自动生成//var reg = new RegExp(/飞雪/g); var str = "风雨送春归飞雪迎春到,飞雪连天向天横"; var xx = str.(str.match(/飞雪/g)); //xx的结果: xx[0]="飞雪" alert(xx); // xx[1]="飞雪"模板的语法(即正规表现)
//字符串相匹配(包括单个字符)【字符串】 reg = new RegExp(/abc/ig); //匹配字符串"abc",多次,大小写不计reg = new RegExp(/abc/ig); xx = "123ABCxyzbcaLMNAbC".match(reg); //xx为: ABC,AbC 注;bca不符合//多个字符串中任意一个相匹配【|】 reg = new RegExp(/abc|xyz/ig); //字符串abc或xyz之间用|分割 注: 【|】不适用于下面的[...]内容reg = new RegExp(/abc|xyz/ig); xx = "123ABCxyzbcaLMNAbC".match(reg); //xx为: ABC,xyz,AbC//字符串中任意一个字符相匹配【[...],[.-.]】reg1 = new RegExp(/[abc]/ig); //匹配任意一个字符用[...] reg2 = new RegExp(/[m-p]/ig); //连续字符串可用减号[.-.] reg3 = new RegExp(/[0-9]/g); //判断是否包含数字 reg4 = new RegExp(/[a-z]/ig); //判断是否包含英文字母 //注: 【-】只是用于[...]中reg1 = new RegExp(/[abc]/ig); xx = "123ABCopqbcaLMNAbC".match(reg1); //xx为: A,B,C,b,c,a,A,b,C reg2 = new RegExp(/[m-p]/ig); yy = "123ABCopqbcaLMNAbC".match(reg2); //yy为: o,p,M,N//字符串中任意一个字符不包含匹配【[^...]】 reg1 = new RegExp(/[^abc]/ig); //匹配任意一个字符都不被包含用^ reg2 = new RegExp(/[^m-p]/ig); //不包含mnop的任一字符 reg3 = new RegExp(/[^0-9]/g); //判断是否不包含数字 reg4 = new RegExp(/[^a-z]/ig); //判断是否不包含英文字母 注: 【^】是在[...]的里面,不是后面所说的【^】在[...]外面reg1 = new RegExp(/[^abc]/ig); xx = "123ABCopqbcaLMN".match(reg1); //xx为: 1,2,3,o,p,q,L,M,N reg3 = new RegExp(/[^0-9]/g); yy = "123opqLMN".match(reg3); //yy为: o,p,q,L,M,N//多个重复字符相匹配【{m,n}】 说明: {m,n}表示从m到n次重复字符相匹配,m,n为大于等于0的整数。{m}和{m,}都是正确的,{ ,n}语法不错,但永远不能匹配 reg1 = new RegExp(/abc{2}/ig); //等价于“/abcc/ig” reg2 = new RegExp(/abc{1,2}/ig); //等价于“/abc|abcc/ig” reg3 = new RegExp(/abc{0,2}/ig); //等价于“/ab|abc|abcc/ig” reg4 = new RegExp(/abc{0,}/ig); //匹配ab后面跟任意个c reg5 = new RegExp(/abc{1,}/ig); //匹配ab后面跟一个以上的c 注: 【{m,n}】不适用于[...]中reg1 = new RegExp(/abc{2}/ig); xx = "abcABCCabccc".match(reg1); //xx为: ABCC,abcc reg3 = new RegExp(/abc{0,2}/ig); yy = "abxABCCabccc".match(reg3); //yy为: ab,ABC,abcc zz = "abA Ba bA b".match(/a {0,}b/ig); //匹配ab之间任意空格。zz为: ab,A B,a b,A b ww = "aa1bb22cc321dd9876".match(/[0-9]{2}/g); //匹配2位数字。ww为:22,32,98,76//子表达式即字符串的一部分相匹配【(...)】 说明: 对字符串的一部分进行操作,可以用()括起来 reg1 = new RegExp(/abc{2}/ig); //等价于“/abcc/ig”,c被重复了2遍 reg2 = new RegExp(/a(bc){2}/ig); //等价于“/abcbc/ig”,bc被重复了2遍reg1 = new RegExp(/abc{2}/ig); xx = "abcABCbccc".match(reg1); //xx为: null reg2 = new RegExp(/a(bc){2}/ig); yy = "abcABCbccc".match(reg2); //yy为: ABCbc通配符
//匹配单个任意字符(不包括\n)【.】xx = "at act ant amount".match(/a.t/gi); //a与t之间有1个字符。xx=act,ant xx = "at act ant amount".match(/a....t/gi); //a与t之间有4个字符。xx=amount//任意匹配字符或字符串【*】等价于{0,}“*”星号前面至少必须有一个字符,任意匹配时可以用“.”代替字符 “*”星号前面不能用限定符{...}及其简写形式xx = "at act ant amount".match(/a*t/gi); //t前面任意个a。xx=at,t,t,t xx = "at act ant amount".match(/a.*t/gi); //a与t之间任意个字符。xx=at,act,ant,amount xx = "at act ant amount".match(gi); //语法出错(*前面不能有限定符)xx = "at act ant amount".match(/.*ou/gi); //ou前面任意个字符。xx=at act ant amou xx = "at act ant amount".match(/.*/gi); //与原字符串相同。xx=at act ant amount//子表达式的任意匹配【?】等价于{0,1}“?”问号前面至少必须有一个字符,任意匹配时可以用“.”代替字符 “?”问号前面没有用(...)将子表达式括起来,“?”相当于“*”,而不是“.” “?”问号的主要作用是对(...){.,.}操作xx = "at act,ant amount".match(/a?t/gi); //t前面有0个或1个a。xx=at,t,t,t xx = "at act,ant amount".match(/?t/gi); //语法出错(*前面无字符)xx = "at act,ant amount".match(/a{1}?/gi); //对“a{1}”的结果匹配。xx=a,a,a,a//子表达式的1次以上匹配【+】等价于{1,}“+”加号前面至少必须有一个字符,也可以用“.”代替字符 “+”加号前面没有用(...)将子表达式括起来,“+”相当于“?”或“*”,而不是“.”xx = "at act,ant amount".match(/a+t/gi); //t前面有1个以上的a。xx=at xx = "at act,ant amount".match(/+t/gi); //语法出错(*前面无字符) xx = "at act,ant amount".match(/a{1}+/gi); //对“a{1}”的结果匹配。xx=a,a,a,a//通酡符小结“.”匹配的字符是任意的,与符号前面的字符没有关系 “?”匹配的字符或字符串与其前面字符或子表达式有关 “.”匹配一个字符,而与“*”、“+”和“?”结合后,能匹配0个或多个 “?”前面没有(...)子表达式时,匹配的是前一个字符 “?”前面有(...)子表达式时,匹配的是前一个子表达式 “?”前面有{m,n}限定符时,匹配的个数就是{m,n}指定的个数xx = "at act,ant amount".match(/a.t/gi); //xx=act,ant xx = "at act,ant amount".match(/a?t/gi); //xx=at,,a,,t,,a,,t,,a,,,,,t, xx = "at act,ant amount".match(/a*t/gi); //xx=at,t,t,t xx = "atat fatt,gatAT amount".match(/at?/gi); //x=at,at,at,at,AT,a xx = "atat fatt,gatAT amount".match(/(at)?/gi); //xx=at,at,,,at,,,,at,AT,,,,,,,, xx = "atat fatt,gatAT amount".match(/(at){2}?/gi);//xx=atat,atAT定位符
开始【^】和结束【$】位置如果有\n或\r时,要与multiLine配合使用xx = "I am a student".match(/^s/i); //xx=null xx = "I am a student".match(/^i/i); //xx=I xx = "I am a \nstudent".match(/^s/i); //xx=null xx = "I am a \nstudent".match(/^s/mi); //xx=s xx = "I am a student".match(/m$/i); //xx=null xx = "I am a student".match(/m$/i); //xx=m xx = "I am a\n student".match(/a$/i); //xx=null xx = "I am a\n student".match(/a$/mi); //xx=a xx = "I am a student".match(/^s/i); //xx=null xx = "I am a student".match(/^i/i); //xx=I xx = "I am a \nstudent".match(/^s/i); //xx=null xx = "I am a student".match(/^i.*t$/i); //xx=I am a student转义字符
\b 匹配一个【单词边界】(例:回车、换行、空格、逗号)。 \B \b除外xx = "I am a student".match(/stu\b/i); //xx=null xx = "I am a student".match(/\bstu/i); //xx=stu xx = "I am a student".match(/ent\b/i); //xx=ent xx = "I am a student".match(/ent\B/i); //xx=null xx = "我是学生".match(/学生\B/i); //xx=null xx = "我是(student)学生".match(/ent\B/i); //xx=ent xx = "我是student学生".match(/ent\B/i); //xx=ent\cA 匹配一个【Ctrl+A】字符。 \d 匹配一个【数字】。等价于[0-9]。 \D \D除外 \f 匹配一个【换页符】字符。等价于 \x0c 和 \cL。 \n 匹配一个【换行符】。等价于 \x0a 和 \cJ。 \r 匹配一个【回车符】。等价于 \x0a 和 \cJ。 \s 匹配一个【空白符】。包括空格、制表符、换页符等。等价于[\f\n\r\t\v]。 \S \D除外 \t 匹配一个【制表符】。等价于 \x09 和 \cI。 \v 匹配一个【垂直制表符】。等价于\x0b 和 \cK。 \w 匹配一个【英文数字】。等价于[A-Za-z0-9]。 \W \w除外 \onnn 匹配一个【8进制数字】。 \xnnn 匹配一个【16进制数字】。(略)\其它字符(正则表达式使用的符号和单双引号)【\(】【\)】【\[】【\]】【\{】【\}】 【\"】【\'】【\^】【\$】【\\】【\/】

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dh19573681/archive/2009/08/21/4471438.aspx
分享到:
评论

相关推荐

    js_正则表达式全攻略

    ### 正则表达式在JavaScript中的应用全攻略 #### 一、正则表达式的概念及其在JavaScript中的重要性 正则表达式(Regular Expression)是一种强大的文本处理工具,能够帮助开发者进行复杂的字符串搜索和替换。在...

    源码(精通正则表达式&实战正则表达式)

    此外,JavaScript提供了`test()`、`match()`、`replace()`、`search()`和`split()`等方法,与正则表达式配合使用,完成各种字符串操作。 总之,通过这个资源,学习者不仅可以系统地学习正则表达式的理论知识,还能...

    正则表达式调试工具

    以及在编程语言中作为字符串处理的利器,如Python的`re`模块,JavaScript的`match`、`search`和`replace`等函数。 综上所述,"正则表达式调试工具V3.0 绿色免费版"是一款实用的开发辅助工具,不仅提供了基本的正则...

    javascript正则表达式详解

    字符组是正则表达式中的基本构造,其定义了包含在一组中的字符范围,比如可以匹配所有数字字符。量词用于指定前面的字符组或字符可以出现的次数,如“*”表示出现零次或多次,“+”表示一次或多次,“?”表示零次或...

    jS 正则表达式实现关键字高亮显示

    在提供的`JS关键字高亮.html`和`正则 关键字高亮显示.html`文件中,很可能是演示了以上步骤的实例,展示了如何在网页中使用JS和正则表达式实现关键字高亮。 总之,利用JavaScript和正则表达式实现关键字高亮显示是...

    使用正则表达式的模式匹配

    特殊元字符在正则表达式中有特定的含义,这些字符包括但不限于: - `.`:匹配任意单个字符(除了换行符)。 - `^`:匹配字符串的开始。 - `$`:匹配字符串的结束。 - `*`:匹配前面的元素零次或多次。 - `+`:匹配...

    JavaScript正则表达式详解及使用方法

    同时,文章还通过具体示例展示了如何在JavaScript中使用正则表达式的exec、test、match、replace、search和split方法。 适合人群:具备基本JavaScript编程基础,对正则表达式有一定了解的开发人员。 使用场景及目标...

    精通 JavaScript正则表达式

    与正则表达式相关的字符串方法有 `match()`(找到匹配项)、`replace()`(替换匹配项)、`search()`(查找匹配项)和 `split()`(根据正则表达式分割字符串)。 例如,下面的代码展示了`test()`方法的工作原理: `...

    正则表达式综合练习

    10. **编程语言支持**:大多数编程语言都内置了正则表达式支持,如Java(Test.java中的例子可能涉及Java的`Pattern`和`Matcher`类),Python的`re`模块,JavaScript的`match`、`replace`等方法。 11. **优化技巧**...

    在HTML中使用正则表达式规范输入数据

    除了`test()`方法,JavaScript还提供了其他与正则表达式相关的函数,如`match()`、`replace()`和`split()`,它们在处理字符串时非常有用。例如,我们可以使用`replace()`来清洗用户输入,去除不必要的空格或特殊字符...

    JS常用正则表达式及其使用方法

    以下是一些常用的正则表达式及其使用方法。 1. **非负整数(正整数+0)** 正则表达式 `^\d+$` 用于匹配非负整数,包括0和正整数。`^` 表示匹配字符串的开始,`\d` 是数字的元字符,代表0-9之间的任何数字,`+` ...

    精通 JS正则表达式

    在JavaScript中,可以通过两种方式创建正则表达式:一种是使用`RegExp`构造函数,另一种是使用正则表达式字面量。通过`RegExp`构造函数创建正则表达式时,需要提供两个参数:一个是正则表达式的文本内容,另一个是可...

    正则表达式.rar || 正则表达式.rar

    1. 元字符:正则表达式中包含一些特殊字符,如"."(匹配任意字符,除了换行符)、"*"(匹配前一个字符0次或无限次)、"+"(匹配前一个字符1次或无限次)、"?"(匹配前一个字符0次或1次)等,它们称为元字符,具有...

    C++ 正则表达式 使用手册 源代码

    - `std::regex_replace()` 函数允许你将字符串中符合正则表达式的部分替换为新的字符串,这对于字符串的格式化和清理非常有用。 7. **正则表达式语法** - C++的 `<regex>` 库支持ECMAScript风格的正则表达式,这...

    正则表达式的妙用

    JavaScript的`match()`、`search()`和`replace()`方法也是常用的正则表达式工具。 在实际操作中,你可能首先需要分析目标网站的HTML结构,找出视频链接出现的规律,然后编写相应的正则表达式。如果网站采用了动态...

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

    在JavaScript中,正则表达式广泛应用于字符串操作,如`match()`、`search()`、`replace()`和`split()`方法。JavaScript的正则表达式有两种创建方式:字面量(/pattern/flags)和构造函数(new RegExp('pattern', '...

    头歌教学实践平台 Web前端开发基础 JavaScript学习手册十:正则表达式

    3. 特殊字符转义:在正则表达式中,特殊字符需要使用反斜杠`(`进行转义,如`\.`匹配实际的点号,`\d`匹配数字。 二、标志符(Flags) 1. `g`:全局搜索,使正则表达式在字符串中查找所有匹配项,而不仅仅是第一个...

    精通正则表达式05

    9. **函数匹配**:结合JavaScript的`test()`、`match()`、`replace()`、`search()`和`split()`等函数,学习如何在代码中实际应用正则表达式。 通过这个教程,你可以提高对正则表达式的理解和应用能力,从而在...

    各类正则表达式详细手册

    JavaScript还提供了test()、exec()、match()、replace()和split()等方法来操作正则表达式。 3. C#字符串和正则表达式: C#的System.Text.RegularExpressions命名空间提供了Regex类,用于处理正则表达式。创建正则...

    java \javascript 正则表达式

    在JavaScript中,我们可以直接在字符串方法如`match()`, `search()`, 和 `replace()`中使用正则表达式。以下是一个简单的示例: ```javascript var str = "Hello, World!"; var regex = /World/; if (str.match...

Global site tag (gtag.js) - Google Analytics