正则表达式

正则表达式初概念——通配符
在查找硬盘文件时,我们可能会用到通配符*通配符可以匹配0个或1个字符,而*通配符则可以匹配0个或多个字符;例如:data(\w)?\.dat能匹配到文件

data.dat
data1.dat
data2.dat
datax.dat
dataN.dat   //0个到1个字符长度

data.*\.dat则能匹配到

data.dat
data1.dat
data2.dat
data12.dat
datax.dat
dataXYZ.dat    //任意字符长度

那么正则表达式又是什么呢?
简单示例:^ [0-9a-z=-#$%]{3,15}abc$
其中^为输入字符串的开始位置;
[0-9f-z&*^$#]中可以输入你想要匹配的符号;
{3,15}则代表了你想要匹配的长度(这里代表了长度在3到15 的区间内);
最后abc$代表了以abc为结尾的字符串;

RegExp 对象
正则表达式是描述字符模式的对象;
正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。
语法部分

var patt = new RegExp(pattern,modifiers);
或者更简单的方式:
var patt = /pattern/modifiers;
  • pattern(模式)描述了表达式的模式
  • modifiers(修饰符)用于指定全局匹配、区分大小写匹配和多行匹配
注意:当使用构造函数创建正则对象时,需要常规的字符转义规则,即需要在正则语句前加上转义符\,比如:
var re = new RegExp("\\w+");
var re = /\w+/;  //这两条语句是等价的

修饰符
基本语法
i 执行对大小写不敏感的匹配

new RegExp("regexp","i")
或者更加简洁的方式
/regexp/i

g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)

new RegExp("regexp","g")
更简单方式
/regexp/g

示例:

var str="Is this all there is?";
var patt1=/is/g;
document.write(str.match(patt1));

输出: is,is

m执行多行匹配

new RegExp("regexp","m")
更简单方式
/regexp/m

方括号

方括号用于查找某个范围的字符

基础语法

new RegExp("[a-h]")
或者更简单方式:
/[a-h]/    //可以匹配到a-h之间的任意的字符
new RegExp("[^a-h]")
或者更简单方式:
/[^a-h]/    //可以匹配到任何不在a-h之间的字符

元字符

.元字符用于查找单个字符,除了换行和行结束符。

基础语法

.new RegExp("regexp.")
或者更加简单的方式:
/regexp./

示例

var str="That's hot!";
var patt1=/T.a/g;    //.元字符匹配单个字符
document.write(str.match(patt1));

输出结果:Tha
\w 元字符用于查找单词字符,其中单词字符包括:a-z、A-Z、0-9,以及下划线,包含_(下划线)等字符。
\W用于查找非单词字符.。
\d用于查找数字字符
\D用于查找非数字字符
\s用于查找空白字符
\S用于查找非空白字符
\b用于匹配单词边界(通常用于查找位于单词开头或结尾的匹配)
\B用于匹配非单词边界
\0用于查找null字符
\n用于查找换行符(获取到的是该换行的位置)
\f用于查找换页符
\r用于查找回车符
\t用于查找制表符
\v用于查找垂直制表符
\xxx用于查找以八进制数xxx规定的字符
\xdd用于查找以十六进制数dd规定的字符
\uxxxx用于查找以十六进制数xxxx规定的Unicode字符

基础语法

new RegExp("\w")
或者更加简单的方式
/\w/

示例

var str="Visit Runooob"; 
var patt1=/\bRun/g;   //只有当该字符串位于语句单词的开头部分时,才能成功匹配
document.write(str.match(patt1));

输出Run

var str="Visit Runooob"; 
var patt1=/\Bun/g;   //只有当该字符串不位于语句单词的开头部分时,才能成功匹配
document.write(str.match(patt1));

输出un

量词

  • n+可以匹配任何包含至少一个n的字符串,例如ca+可以匹配‘candy’中的ca,也可以匹配‘caaaaandy’中的caaaaa(即至少包含一个a)
  • n*可以匹配任何包含零个或多个n的字符串,例如bo*可以匹配 "A ghost booooed" 中的"boooo""A bird warbled" 中的 "b"(即被匹配的单词可以为0个)
  • n?可以匹配任何包括零个或一个n的字符串
  • n$匹配任何结尾为 n 的字符串
  • ^n匹配任何开头为 n 的字符串
  • ?=n匹配任何其后紧接指定字符串 n 的字符串
  • ?!n匹配任何其后没有紧接指定字符串 n 的字符串

RegExp对象方法

  • compile()编译正则表达式
    语法:RegExpObject.compile(regexp,modifier)
  • exec()检索字符串中指定的值,返回找到的值,并确定其位置
    语法:RegExpObject.exec(string)
  • test()检索字符串中指定的值。返回 truefalse
    语法:RegExpObject.test(string)
  • toString()返回正则表达式的字符串
    语法:RegExpObject.toString()(没有参数)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值