JavaScript正则表达式 RegExp

JavaScript正则表达式 RegExp

  • 创建RegExp
/ab+c/i;
new RegExp('ab+c', 'i');
new RegExp(/ab+c/, 'i');

  • 字符类别
字符含义
.匹配任意单个字符,但是换行符除外
\d等价于[0-9]
\D等价于[^0-9]
\w等价于 [A-Za-z0-9_]
\W等价于 [^A-Za-z0-9_]
\s匹配一个空白符
\S匹配一个非空白符

  • 字符集合
字符含义
[xyz]等价于[x-z]
[^xyz]等价于[^x-z]

  • 边界
边界含义
^匹配输入字符串的开始
$匹配输入字符串的结尾

  • 数量词
字符含义
x*匹配前面的模式x 0或多次
x+匹配前面的模式x 1或多次
x?匹配前面的模式x 0或1次
x*?最小可能匹配 x*
x+?最小可能匹配 x+
x(?=y)只有后面紧跟着y时,才匹配x
x(?!y)只有后面变不是紧跟着y时,才匹配
xy
x{n}前面的模式x 连续出现n次时匹配
x{n,}前面的模式x 连续出现至少n次时,才匹配
x{n,m}前面的模式x 连续出现至少n次,至多m次时,才匹配

  • 属性
RegExp.prototype
RegExp.length
RegExp.lastIndex

  • 方法
RegExp.toString()
RegExp.exec() //在目标字符串中执行一次正则匹配操作
RegExp.test() //测试当前正则是否能匹配目标文件

  • 字符串正则表达式
str.match(regexp);
str.search(regexp)

  • 实例
//(first last)-->(last,first)
var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1");
print(newstr); // Smith John
// 多行匹配
var str = "Please yes\nmake my day!";
str.match(/yes.*day/);
// Returns null
str.match(/yes[^]*day/);
// Returns 'yes\nmake my day'
// 使用sticky
var text = "First line\nsecond line";
var regex = /(\S+) line\n?/y;

var match = regex.exec(text);
print(match[1]);  // prints "First"
print(regex.lastIndex); // prints 11

var match2 = regex.exec(text);
print(match2[1]); // prints "Second"
print(regex.lastIndex); // prints "22"

var match3 = regex.exec(text);
print(match3 === null); // prints "true"
// 使用Unicode字符
var text = "Образец text на русском языке";
var regex = /[\u0400-\u04FF]+/g;

var match = regex.exec(text);
print(match[1]);  // prints "Образец"
print(regex.lastIndex);  // prints "7"

var match2 = regex.exec(text);
print(match2[1]);  // prints "на" [did not print "text"]
print(regex.lastIndex);  // prints "15"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值