使用RegExp的显式构造函数,语法为:new RegExp("pattern"[,"flags"])。
使用RegExp的隐式构造函数,采用纯文本格式:/pattern/[flags]。
pattern部分为要使用的正则表达式模式文本,是必须的。
在第一种方式中,pattern部分以JavaScript字符串的形式存在,需要使用双引号或单引号括起来,这时首尾不需要'/'。
在第二种方式中,pattern部分嵌套在两个“/”之间,不能使用引号。
由于JavaScript字符串中的“\”是一个转义字符,因此,使用显式构造函数创建RegExp实例对象时,应将原始正则表达式中的“\”用“\\”替换
如:var reg1 = new RegExp("\\d{2}");
var reg2 = /\d{2}/;
var reg = new RegExp("^(\\+|-)?\\d+(\.\\d{0,2})?$"); //可有两位小数的浮点数
含变量的时候:
var a = "abc",
reg3 = new RegExp("^\\d" + a + "\\d$");
由于正则表达式模式文本中的转义字符也是“\”,如果正则表达式中要匹配原义字符“\”,在正则表达式模式文本中要以“\\”来表示,当使用显式构造函数的方式创建RegExp实例对象的时候,就需要使用“\\\\”来表示原义字符“\”。
var reg = new RegExp(\\\\)。
下面再复习下最常用的 test exec match search replace indexOf split 7个方法
var str = "" ,str1 = ""; //字符串
var reg = new RegExp(); //reg对象
var x = [] ; //返回的数组
g //全局匹配
i //不区分大小写
m //多行模式匹配
1.test
格式: reg.test(str); // 返回true 或false;
eg: /(a)\w+/.test("abcde") //返回true;
2.exec
格式:reg.exec(str); //返回一个数组 数组第一项为匹配的表达式 如果有匹配的子表达式则数组第二项为子表达式 以此类推。exec永远返回与第一个匹配相关的信息,不管有没有g
eg: /a(b)\w+/.exec("abcdef"); //返回的数组 x[0] = “abcdef” ,x[1] = "b";
/ab\w+/g.exec("abcde.fabc") //返回"abcde"
3.match
格式:str.match(reg); //返回一个数组 如果没有全局标识符g 则和exec一样,第一项 为匹配的表达式, 如果有匹配的子表达式则数组第二项为子表达式 以此类推。如果reg有全局标识符g 则 第一项 为第一个匹配的表达式,第二项 为第二个匹配的表达式 以此类推。
eg : "abcdef.abc".match(/a(b)\w+/); 返回 x[0] = “abcdef”,x[1] = "b";
"abcdef.abc".match(/a(b)\w+/g); 返回 x[0] = “abcdef” ,x[1] = "abc";
有关exec 和 match 的区别 这里有篇文章说的比较详细:http://makemyownlife.iteye.com/blog/395172
4.search
格式: str.search(reg); 返回从字符串中寻找指定值的位置,如果没找到则返回-1。它将忽略标志g。它同时忽略regexp 的lastIndex 属性,并且总是从字符串的开始进行检索。
eg: "abcdef".search(/a/) //返回0
5. indexOf
格式:str.indexOf(str1[,startIndex]) ; 返回从字符串中寻找指定值的位置,如果没找到则返回-1,可以指定开始检索的位置 ,和search的区别是str1不能是正则表达式。
6.replace
格式:str.replace(reg,str1) ; 返回 替换后的字符串 支持 i、g、m
eg: "abcdef".replace(/a/,"b") 返回:“bbcdef”;
"abcdefaa".replace(/a/ig,"b") 返回:“bbcdefbb”;
当str1为function时 返回的$1为正则表达式相匹配的文本,$2为子表达式匹配的文本,依此类推。
当str1为$1$2...时,则$1$2分别匹配相对应的子表达式。
eg:
var a = "abcealsk";
var c1 = a.replace(/(ab)c/ig,function($1,$2){return $1 + $2}); //返回:abcabealsk
var c2 = a.replace(/(ab)c/ig,"$1$2"); //返回:ab$2ealsk //此时$2没有对应的字表达式被当做字符串返回了。
比如常用的去掉字符串两端的空格
var a = " a a ";
var b = a.replace(/(^\s*)|(\s*$)/g,''); 或 var b = a.replace(/^\s*(\w+.*\w+)*\s*$/,'$1');
b为‘a a’
7.split
格式:str.split(reg); 返回按照reg划分后的数组 支持i
eg: "a_b_B_d_e".split(/b/i); 返回:[a_,_,_d_e]
分享到:
相关推荐
正则表达式是一种强大的文本处理工具,用于在字符串中进行模式匹配、搜索、替换和提取信息。它在软件开发中广泛应用于数据验证、文本处理、输入校验等场景。正则表达式通过特殊的语法和运算符,允许程序员构建灵活且...
### 正则表达式基础知识与应用 #### 一、正则表达式的定义及用途 正则表达式(Regular Expression)是一种强大的文本处理工具,能够帮助我们实现字符串的搜索、替换等操作。它在多种编程语言中都有应用,尤其是在...
Python正则表达式笔记 正则表达式是 Python 中的一种强大工具,用于匹配和处理字符串。下面是 Python 正则表达式笔记中的一些重要知识点: 1. 导入模块:在使用正则表达式之前,需要导入 re 模块。import re 2. ...
标题与描述中的“js正则表达式笔记,直接运行”明确指出这是一份关于JavaScript正则表达式的笔记,其中包含了可以直接执行的代码示例。正则表达式在编程中是一种非常强大的工具,用于处理字符串模式匹配、搜索和替换...
### Java正则表达式基础知识与应用 #### 一、引言 正则表达式是一种强大的文本处理工具,它能够帮助开发者高效地进行字符串的搜索、替换等操作。Java中的正则表达式支持广泛的标准和特性,是进行文本处理任务的理想...