VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > JavaScript教程 >
  • 3-javaScript(伍)

1. 正则表达式

正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象。

1.1 创建正则表达式

//字面量
var re = /\w+/;
//构造函数
var re = new RegExp("\\w+");

1.2 特殊字符

字符 含义
\d 匹配一个数字
\D 匹配一个非数字字符
\s 匹配一个空白符(包括空格,制表符)
\S 匹配一个非空白字符
\w 匹配一个单字字符(字母或数字或下划线)
\W 匹配一个非单字字符(不是字母,数字,下划线)

限定符

字符 含义
^ 匹配输入的开始
$ 匹配输入的结束
* 匹配前一个表达式 0 次或多次。等价于 {0,}
+ 匹配前面一个表达式 1 次或者多次。等价于 {1,}
? 匹配前面一个表达式 0 次或者 1 次。等价于 {0,1}
. 默认匹配除换行符之外的任何单个字符

组合符

字符 含义
x(?=y) 匹配'x'仅仅当'x'后面跟着'y'.这种叫做先行断言
(?<=y)x 匹配'x'仅当'x'前面是'y'.这种叫做后行断言
x(?!y) 仅仅当'x'后面不跟着'y'时匹配'x',这被称为正向否定查找
(?<!y)x 仅仅当'x'前面不是'y'时匹配'x',这被称为反向否定查找
x|y 匹配‘x’或者‘y’
{n} n 是一个正整数,匹配前面一个字符刚好出现了 n 次
{n,} n是一个正整数,匹配前一个字符至少出现了n次
{n,m} n 和 m 都是整数。匹配前面的字符至少n次,最多m次
[xyz] 一个字符集合。匹配方括号中的任意字符
[^xyz] 一个反向字符集, 它匹配任何没有包含在方括号中的字符
[\u4e00-\u9fa5] 匹配汉字

标志

标志 描述
g 全局搜索
i 不区分大小写

2. 正则匹配

regexp.test(str)

方法执行一个检索,用来查看正则表达式与指定的字符串是否匹配;

返回值:如果正则表达式与指定的字符串匹配 ,返回true;否则false

let str = 'hello world!';
let result = /^hello/.test(str);
console.log(result);//true

3. 正则提取

str.match(regexp)

方法检索返回一个字符串匹配正则表达式的结果

返回值:

  • 如果使用g标志,则将返回与完整正则表达式匹配的所有结果的数组
  • 如果未使用g标志,则仅返回第一个完整匹配的数组
let paragraph = 'This is lazy dog. It barked.';
let regex = /[A-Z]/;
let found = paragraph.match(regex);
console.log(found);//["T", "I"]

4. 正则替换

str.replace(substr | regexp, newSubStr | function)

replace() 方法返回一个由新值替换旧值后产生的新字符串。替换模式可以是一个字符串或者一个正则表达式,新值可以是一个字符串或者一个每次匹配都要调用的回调函数

返回值:一个由替换规则替换后的新字符串

当第二个参数为回调函数时,当匹配执行后,该函数就会执行。 函数的返回值作为替换字符串。另外要注意的是,如果第一个参数是正则表达式,并且其为全局匹配模式,那么这个方法将被多次调用,每次匹配都会被调用。

回调函数的常用参数如下

参数名 代表的值
match 匹配的子串
p1,p2, ... 假如replace()方法的第一个参数是一个正则表达式,则代表第n个括号匹配的字符串
var str = '10101';
var list = [];
// replace第一个参数可以为正则表达式,这时第二个参数为回调函数,返回值将替换掉正则表达式匹配到的结果
var fk = str.replace(/(1)|(0)/g, replacer);
// 第一个参数match为匹配到的字符串,第二个参数为正则表达式中第一个括号匹配到的字符串,以此类推
function replacer(match, p1, p2) {
    if (p1) { list.push("on") }
    if (p2) { list.push("off") }
    return "1"
}
console.log(list);// ["on", "off", "on", "off", "on"]
console.log(fk);// 11111
 

__EOF__

 
  • 本文作者: ReCreyed
  • 本文链接: https://www.cnblogs.com/recreyed/p/js5.html

    
    相关教程