首页 > 编程语言 >JavaScript--正则表达式

JavaScript--正则表达式

时间:2022-10-28 19:57:02浏览次数:57  
标签:匹配 -- JavaScript var 正则表达式 字符串 replace match

一、概述

正则表达式(Regular Expression)是一个描述字符模式的对象, 用于对字符串进行匹配, 一般用在有规律的字符串匹配中;常用于表单验证以及相关的字符串匹配

二、声明

1.使用正则表达式直接量,将其包含在一对斜杠(/)之间的字符。

var regx = /a/ //表示匹配a
//字符串支持正则的方法 replace split search match
var str = 'abcdef'
console.log(str.match(regx));
regx = /a/i
console.log('ABC'.match(regx));  

2.使用new关键词来声明

//使用new关键词 参数一是匹配的对应的正则表达式 参数二模式
//i表示不区分大小写  g表示全局搜索
var regx1 = new RegExp('a','i')
var str1 = 'ABC'
console.log(str1.match(regx1));
模式修饰

g 全局搜索

i 不区分大小写

m 换行模式

三、正则匹配的元字符

[] 表示里面任意的一个元素
^ 表示开头
$ 表示结尾
{} 表示个数
var regx2 = /[a-z]{6}/ //表示6个小写的字母
regx2 = /[a-z]{0}/ //表示0个字母
regx2 = /[a-z]{1,3}/ //表示1个到3个
regx2 = /[a-z]{1,}/ //表示1个到无穷个
{n,m} 匹配前一项至少n次,至多m次 
{n,} 匹配前一项n次或者更多次,也可以说至少n次 
{n} 匹配前一项n次 
? 匹配前一项0次或者1次,等价于{0,1} 
+ 匹配前一项1次或多次,等价于{1,} 
* 匹配前一项0次或多次,等价于{0,}

注意:在使用“”和“?”时,由于这些字符可能匹配0个字符,因此它们允许什么都不匹配。比如:正则表达式/a/实际上与字符 串“bbb”匹配,因为这个字符串含有0个a。

. 表示所有的内容(包括中文字符)
\w 表示对应的字母数字下滑线 \W 就是相反的 不是字母数字下滑线
\d 表示数字 \D表示非数字
\s 表示空白字符串(回车 制表 空格) \S就是相反的 不是空白字符
() 分组
| 或者
转义 \
//匹配 ? * + .等元字符 转义\
var regx10 = /^[?]$/
console.log('?'.match(regx10));
var regx10 = /^[*]$/
console.log('*'.match(regx10));
//用转义字符来
var regx10 = /^\*$/
console.log('*'.match(regx10));
var regx10 = /^\.$/
console.log('.'.match(regx10));

四、检测方法

test

正则对象的test方法返回一个布尔值,表示当前模式是否能匹配参数字符串。

var regx = /\w/
console.log(regx.test('abc')) //true

注意:如果正则表达式带有g修饰符,则每一次test方法都从上一次结束的位置开始向后匹配,也可以通过正则对象的 lastIndex属性指定开始搜索的位置。

exec

正则对象的exec方法,可以返回匹配结果。如果发现匹配,就返回一个数组,成员是每一个匹配成功的子字符串,否则返回 null。

var regx = /\d/
console.log(regx.exec('123')) //[1,2,3]

五、字符串支持正则的4个方法

  • split :按照给定规则进行字符串分割,返回一个数组,包含分割后的各个成员。
  • replace :按照给定的正则表达式进行替换,返回替换后的字符串。
  • search :按照给定的正则表达式进行搜索,返回一个整数,表示第一个与之匹配的字符串的起始位置,如果找不到匹配 的子串,将返回-1。
  • macth:返回一个数组,成员是所有匹配的子字符串。

按照给定的正则表达式进行搜索,返回一个整数,表示第一个与之匹配的字符串的起始位置,如果找不到匹配的子串,将返 回-1。

"javascript".search(/script/i);
//上面的代码的返回值为4 

如果search()的参数不是正则表达式,则首先会通过RegExp构造函数将它转换成正则表达式,search()方法不支持全局检索, 因为它忽略正则表达式参数中的修饰符g。

match()

match()方法的唯一参数是一个正则表达式,返回的是一个由匹配结果组成的数组。如果该正则表达式设置了修饰符g,则返 回的数组包含字符串中的所有匹配结果。

'1 plus 2 equals 3'.match(/\d+/g) //返回["1","2","3"]

返回来的数组还带有另外两个属性:index和input,分别表示包含发生匹配的字符位置和引用的正在检索的字符串。

replace()

replace()方法用以执行检索与替换操作。其中第一个参数是一个正则表达式,第二个参数是要进行替换的字符串。
如果replace()的第一个参数是字符串而不是正则表达式,则replace()将直接搜索这个字符串,而不会像search()一样首先通过 RegExp()将它转换为正则表达式。
replace方法的第二个参数可以使用美元符号$,用来指代所替换的内容

$` 指代匹配结果前面的文本。 
$' 指代匹配结果后面的文本。 
$n 指代匹配成功的第n组内容,n是从1开始的自然数。 
$$ 指代美元符号$。

比如:

// "world hello" 

replace方法的第二个参数还可以是一个函数,将每一个匹配内容替换为函数返回值。

 'abca'.replace(/a/g,function(match){ return match.toUpperCase(); }); 
// "AbcA" 

replace()方法的第二个参数可以接受多个参数。第一个参数是捕捉到的内容,第二个参数是捕捉到的组匹配(有多少个组匹 配,就有多少个对应的参数)。

split()

split()方法用以将调用它的字符串拆分为一个子串组成的数组。 ```
'123,456,789'.split(',')
//返回["123","456","789"]

split()方法的参数也可以是一个正则表达式。

标签:匹配,--,JavaScript,var,正则表达式,字符串,replace,match
From: https://www.cnblogs.com/zhouwying/p/16837240.html

相关文章

  • JavavScript--ES5和ES6(下)
    一、Map基于set和array之上构建的一个集合1、Map的声明使用new关键字和Map构造函数letm=newMap();通过二维数组声明vararr=[[1,2],[3,4]]varmap=ne......
  • JavaScript--运动
    一、概述运动主要是动画的操作,主要是操作某个document元素的属性变化(位置变化)二、运动主要的原理及步骤原理:使用开启定时器setInterval()/setTimeout()和清除定时器c......
  • 浅谈PHP设计模式的观察者模式
    简介观察者模式是行为型模式的一种,定义了对象间一对多的关系。当对象的状态发生变化时候,依赖于它的对象会得到通知。适用场景类似触发钩子事件,可做消息通知、框架底层......
  • JavaScript--循环语句
    一、循环语句的概念1、循环语句,声明一组要反复执行的命令,直到满足某些条件为止。2、循环包括测试条件以及一个块(通常就是{..})。循环块的每次执行被称为一个迭代。二......
  • JavaScript--原型及模块入门
    面向对象回顾核心概念:万物皆对象(顶层对象Object)抽取行为作为方法抽取名词作为属性俩种构建对象的方式构造函数构建es6的形式classclassPerson{ constructor(){/......
  • JavaScript--条件控制语句
    一、if语句if语句有三种形式:简单的if语句,if-else语句,if-elseif语句。1、语法if语句是使用最频繁的语句之一,语法如下://if语句if(condition){statement1}......
  • JavaScript--详解&&和--
    一、&&和||的简单介绍1、&&(逻辑与)逻辑与操作符由两个和号(&&)表示。2、||(逻辑或)逻辑或操作符由两个管道符(||)表示。二、深入理解&&和||1、用法&&和||运算符的返回值......
  • TreeMap
    (1)TreeMap跟TreeSet底层原理一样,都是红黑树结构的。(2)由键决定特性:不重复、无索引、可排序。(3)可排序:对键进行排序。(4)注意:默认按照键的从小到大进行排序,也可以自己规定键的......
  • 软链接和硬链接
    软链接:1.软链接存放的是源文件的路径,指向源文件2.源文件删除,软链接文件依然存在,但是找不到路径3.源文件和软链接文件iNode号不同4.创建软链接  ln -s  源文件......
  • 程序员的修炼之道——从小工到专家4
    第四章注重实效的偏执 按合约设计没有合约,编译器所能做的只是确保子类符合特定的方法型构(signature)。但如果我们适当设定基类合约,我们现在就能够确保将来任何子类都无......