以前看到一大串符号如这样的/^[a-z]+\s+\d+$/g,就知道是正则表达式,但是具体代表什么意思,一直没去深究过.今天趁着工作上稍微的清闲,来探索一下.
这里以javascript中的正则表达式为例.
正则表达式两种写法:
var reg = new RegExp("e");//RegExp对象是一个预定义了属性和方法的正则表达式对象;
var reg1 = /e/;
常用的是第二种写法,接下来也就第二种进行探索
使用字符串方法:search()和replace() 用法:字符串.方法()
search()方法用于检索字符串中指定的字符串,或检索与正则表达式相匹配的子字符串,并返回子字符串的起始位置,检索不到返回-1.
实例: var str = "Hello World";
var n = str.search(/world/i);//这里的world是一个模式(用于检索),i是一个修饰符(不区分大小写).
var n1 = str.search("World");//语法:StringObj.search(RegExp),对全局和大小写敏感
输出结果为:6
replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的字符串
实例: var str = "Hello World!";
var res = str.replace(/world/i,"Java");
var res1 = str.replace("World","Java");
输出结果为: Hello Java!
正则表达式修饰符:
i 执行对大小写不敏感的匹配;
g 执行全局匹配(查找所以匹配,而非在找到第一个后停止);
m 执行多行匹配;
正则表达式模式:
表达式: [abc] 查找方括号之间的任何字符;
[0-9] 查找任何从0至9的数字;
(x|y) 查找任何以|分割的选项;
元字符: \d 查找数字;
\s 查找空白字符;
\b 匹配单词边界;
\uxxxx 查找以十六进制数xxxx规定的Unicode字符;
量词: n+ 匹配任何包含至少一个n的字符串;
n* 匹配任何包含零个或者多个n的字符串;
n? 匹配任何包含零个或者一个n的字符串;
RegExp对象的方法:RegExp.方法()
test()方法:用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回true,否则返回false;
实例: var rep = /e/;
var res = rep.test("Hello World!");
var res1 = /e/.test("Hello World!");
输出结果为: true
exec()方法:用于检索字符串中的正则表达式的匹配.该方法返回一个数组来存放匹配的结果,如果未找到匹配,则返回null;
实例: /e/.exec("Hello World!");
输出结果为: e
compile()方法:改变RegExp,既可以改变检索模式,也可以改变第二个参数
实例: var rep = /e/;
var res = rep.test("Hello");
rep.compile("d");
var res1 = tep.test("Hello");
输出结果为: true,false