JavaScript 正则表达式 学习笔记(一)

2019/02/27 16:30
阅读数 163

名词解释

正则表达式:Regular Expression,在代码中常简写为RegEx、RegExp或RE。

使用方法

JS中主要有两种使用正则表达式的方法:创建RegExp对象方法、直接量方法。

方法一:创建RegExp对象

对象声明:

new RegExp(pattern, attributes);

pattern:一个正则表达式字符串;

attributes:检索模式,包含"g"、"i"、"m"三种。g(global):全局匹配,i(ignoreCase):不区分大小写,m(multiline):多行匹配。

使用方法:

RegExp对象有三个方法:compile()、test()、exec()。

1.test()方法:

test()方法返回检索匹配的结果值,返回值为布尔值。

示例代码:

// 匹配字符"e"
var re = new RegExp("e");
//test方法返回值为true或false
var result = re.test("The best things in life are free.");
document.write(result);

**输出结果:**true

2.exec()方法:

exec()方法返回检索匹配的结果值,返回值为被找到的值,如果没有发现匹配值则返回null。

示例代码:

// 匹配字符"e"
var re = new RegExp("e");
//test方法返回值为true或false
var result = re.exec("The best things in life are free.");
document.write(result);

**输出结果:**e

3.compile()方法:

compile()方法可重新编译已被初始化的正则表达式。

示例代码:

var re = new RegExp("e");
var result1 = re.test("The best things in life are free.");
document.write(result1);

re.compile("d");

var result2 = re.test("The best things in life are free.");
document.write(result2);

**输出结果:**truefalse

方法二:直接量语法

简单点,就是使用String对象内部的四个支持正则表达式的方法来匹配数据。毕竟正则大部分时刻匹配的都是字符串嘛~

语法声明:

/pattern/attributes

使用方法:

一共四个:search()、match()、replace()、split()。其中search()、match()可返回正则匹配结果,而replace()、split()可根据正则匹配结果对字符串进行相应的替换或拆分处理。

1.search()方法:

从字符串的开始位置检索,返回匹配的元素第一次出现的位置下标。默认对大小写敏感。

示例代码一(默认检索,不加attributes):

var string = "A new day has come.";
var result = string.search(/new/);
document.write(result);

**输出结果:**2

示例代码二(默认检索,改变大小写):

var string = "A New Day Has Come.";
var result = string.search(/new/);
document.write(result);

输出结果:-1

示例代码三(取消默认检索,添加attributes忽略大小写):

var string = "A New Day Has Come.";
var result = string.search(/new/i);
document.write(result);

**输出结果:**2

2.match()方法:

返回匹配成功的指定值,而非元素位置。

示例代码一:

var string = "A New Day Has Come.";
var result = string.match(/[e]/g);/*全局搜索所有字符e*/
document.write(result);

**输出结果:**e,e

示例代码二:

var string = "1 plus 2 equals 3";
var result = string.match(/\d/g);/*全局搜索所有数字*/
document.write(result);

**输出结果:**1,2,3

至此,正则匹配返回匹配结果的方法就基本结束了,接下来的replace()和split()方法不会返回匹配结果,一个是根据正则匹配的结果来替换原有字符串,一个是根据正则拆分字符串。

3.replace()方法:

根据正则(或字符串),替换原有字符串的部分值。

语法声明:

stringObject.replace(regexp/substr, replacement)

regexp/substr:正则表达式或字符串;

replacement:替换文本。

示例代码一:

// 把所有的e替换为E
var string = "A New Day Has Come.";
var result = string.replace(/[e]/g, "E");/*写成replace(/e/g, "E")也可以*/
document.write(result);

**输出结果:**A NEw Day Has ComE.

示例代码二:

// 单词互换
var string = "Joe, Jack";
var result = string.replace(/(\w+),\s(\w+)/, "$2, $1");
document.write(result);

**输出结果:**Jack, Joe

示例代码三:

// 将一句话中所有的单词首字母改为大写
var string = "A new day has come.";
var result = string.replace(/\b\w+\b/g, function (word) {
    return word.substring(0, 1).toUpperCase() + word.substring(1);
});
document.write(result);

**输出结果:**A New Day Has Come.

4.split()方法

拆分字符串。

语法声明:

stringObject.split(regexp/substr, maxLength)

regexp/substr:正则表达式或字符串;

maxLength(可选参数):返回数组的最大长度。

示例代码:

// 将一句话中所有的单词分割为数组
var string = "A new day has come.";
var result = string.split(/\s/, 4);/*或者这么写:split(" ", 4)*/
document.write(result);

**输出结果:**A,new,day,has

结束语:这只是笔记(一).... 以上内容总结来自经典网站:w3school

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部