js - 正则表达式基础内容

工具:Regexper

实例化RegExp:

  • 字面量 /\bis\b/g
  • 构造函数 var reg = new RegExp('\\bis\\b', 'g'); (需要转义斜线)

修饰符

  • g:global 全文搜索,不添加则搜索到第一个匹配停止
  • i:ignoreCase 忽略大小写
  • m:multiplelines 多行搜索,以换行符也当成新的一行进行搜索匹配

特殊字符

元字符 含义
\t 水平制表符
\v 垂直制表符
\n 换行符
\r 回车符
\0 空字符
\f 换页符
\cX 与X对应的控制字符(ctrl+X)
\b 单词边界
\B 非单词边界
. 任意字符
* 0或1或多次,任意次
+ 至少1次
0或者1次
{n} 出现n次以上
{n,m} 出现n-m次
{n,} 至少出现n次
{0,n} 最多n次
^ 用着类中表示取反,用在字符串中表示正则的开始
$ 表示正则的结束
类别 表达 例子
字符类 []泛指一个类 [abc]匹配abc中任意一个
范围类 [a-z0-9A-Z]匹配[]中的字符
预定义类 \d:[0-9]数字字符;
预定义类 \D:[^0-9] 非数字字符;
预定义类 \s:空白符;
预定义类 \S:非空白符;
预定义类 \w:[a-zA-Z_0-9]单词字符(字母,数字,下划线);
预定义类 \W:[^a-zA-Z_0-9]非单词字符

贪婪模式

正则中默认为贪婪模式

'12345678'.replace(/\d{3,6}/g, 'X')  //X78 每6个为一个匹配

非贪婪模式

'12345678'.replace(/\d{3,6}?/g, 'X')  //XX78 每3个为一个匹配

分组

使用()能达到分组功能,使量词作用于分组,而不是挨着的字符

  • $符:配合分组,$1表示第一个捕获分组,$2表示第二个捕获分组……
  • 忽略分组:不希望捕获某些分组,只需要在分组内加上 ?:

使用 | 能达到或功能

'abdefcba'.replace(/ab(c|d)ef/g,'X')  //Xcba abcefg或者abdefg都可以匹配

前瞻

正则表达式从文本头部向尾部开始解析,所以在文本尾部方向表示“前”

  • 正向前瞻 exp(?=assert)
  • 负向前瞻 exp(?!assert)
'a1b2c*b#'.replace(/\w(?=\d)/g,'X') //X1X2c*b# 前瞻为数字的匹配
'a1b2c*b#'.replace(/\w(?!\d)/g,'X') //aXbXX*X# 前瞻不为数字匹配

相关属性和方法

对象属性

  • global 是否全文搜索,只读
  • ignoreCase 是否忽略大小写,只读
  • multiline 是否多行搜索,只读
  • lastIndex 当前匹配结果的最后一个字符的下一个字符

方法

  • RegExp.prototype.test(str)
    测试字符串参数中是否存在匹配正则表达式模式的字符串
reg1 = /\w/;
reg1.test('ab'); //true
---------------------------
//特殊情况,在全局搜索下
reg2 = /\w/g;
reg2.test('ab') //true 第一次匹配a
reg2.test('ab') //true 第二次匹配b
reg2.test('ab') //false 第三次则无
while(reg2.test('ab')){
      console.log(reg2.lastIndex); 
}
// 1
   2
   undefined
//lastIndex 表示第一次匹配结束的最后一个字符的下一个字符的索引值
  • RegExp.prototype.match(str)
  • RegExp.prototype.exec(str)
    使用正则表达式模式对字符串执行搜索,并将更新全局RegExp对象的属性;如果没有匹配的文本则返回null,否则返回一个匹配的结果数组。
    - index 声明匹配文本的第一个字符的位置
    - input 存放被检索的字符串String

end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • RegExp对象 字面量 var reg=/\bis\b/g;定义变量reg然后把正则表达式文本写到两个反斜杠之间...
    深沉的简单阅读 5,412评论 0 0
  • Regular Expression是一个描述符合匹配条件的字符串的字符串,在js中有对应的RegExp对象来存储...
    lhdoeo阅读 4,198评论 2 2
  • 正则表达式(Regular Expression)是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系...
    草鞋弟阅读 4,187评论 0 0
  • 正则表达式——基本语法 正则表达式(Regular Expression)是计算机科学的一个概念。正则表达式使用单...
    南山码农阅读 3,283评论 0 1
  • 带你入门(几个小小点) 目录 正则表达式的使用 正则表达式的基本构成元素 正则中的类(分类),基本的元字符 + 五...
    南航阅读 4,300评论 0 2

友情链接更多精彩内容