弄懂每个JavaScript正则表达式式的意思就够了

智聪说说网
智聪说说网
智聪说说网
43262
文章
0
评论
2023-01-2918:27:54 评论 7

正则表达式,各种语言(JS、Java、Php等)里面很常见,语法也很相似。作为新手,第一次接触正则可能会一脸茫然。这是什么?语法这么奇怪。事实上,它的语法迹可循的,基本上是规定的语法模式。只要掌握了它的语法,也可以写出自己的正则表达。

以下是我们一起学习的内容,可以先了解一下:

1.正则表达式是什么?

2.正则表达式在哪里使用?

3.如何创建正则表达式?

正则表达式的元字符有哪些?意思是什么?

5.正则表达式优先级

6.正则表达式的相关方法有哪些?

7.正则表达式思维导图

正则表达式(regular expression)它描述了字符串匹配的模式,可以用来检查字符串是否含有某种子串,替换匹配的子串,或者从字符串中取出符合条件的子串。

简单的讲:正则表达式就是处理字符串的。

1.常用于表格验证(如登录用户名、密码等。

2.替换文本,例如数据中包含大量的换行符(enter),输出到页面是看不见的,需要全局替换

3.根据模式匹配从字符串中提取子字符串。可用于在文本或输入字段中找到特定的文本。

创建正则表达式,有两种方式:

1.创建字面量的方法

2.实例创建方法

// 创建字面量的方法 var reg = /pattern/flags; //实例创建方法 var reg = new RegExp(pattern, flags); 描述:

pattern: 正则表达式(正则表达式主体)

flags: 标志(修饰符) 标识主要包括:

1. i 忽略大小写的匹配

2. m 多行匹配,即将到达一行文本末尾,也会继续寻常下一行是否与正则相匹配

3. g 全局匹配 模式应用于所有字符串,而不是在找到第一个匹配项时停止

字面量创建和构造函数创建有什么区别????

1.字面量创建方法不能拼接字符串,创建实例的方法是可以的

cj660cn免费领取枪皮肤(《和平精英》枪械的皮肤要怎么免费获得?)

var regParam = 'cm'; var reg1 = new RegExp(regParam '1'); var reg2 = /regParam/; console.log(reg1); // /cm1/ console.log(reg2); // /regParam/ 2.字面量创建方法特殊含义的字符不需要转义,实例创建模式需要转义

var reg1 = new RegExp('\\d'); // /d/ var reg2 = new RegExp('\\\\d') // /\\d/ var reg3 = /\\d/; // /\\d/ 元字符是正则表达式的关键,因为每一个都有特殊的含义,所以一定要掌握。

元字符的特殊含义

\\d : 0-9之间的任何数字 \\d只占一个位置 \\w : 数字,字母 ,下划线 0-9 a-z A-Z _ \\s : 空格或空白等 \\D : 除了\\d \\W : 除了\\w \\S : 除了\\s . : 除了\ 其他任何字符 \\ : 转义字符 | : 或者 () : 分组 \ : 匹配换行符 \\b : 匹配边界 字符串的开头和结尾 空格的两边都是边界 => 字符串数不占用 ^ : 限制开始位置 => 本身不占位置 $ : 限制结束位置 => 本身不占位置 [a-z]: 任意字母[]任何一个表示都可以 [^a-z]: 非字母[]中^代表除了 [abc]: abc三个字母中的任何一个[^abc]除了这三个字母中的任何一个字符 量词元字符

* : 0到多个 : 1到多个 ? : 0次或1次 可有可无 : 正好n次; ,}: n到多次 ,m}: n次到m次 量词会出现在元字符后面 如d ,用来限制出现在前面的元字符的次数

实例:

var str = '1223334444'; var reg = /\\d{2}/g; var res = str.match(reg); console.log(res) //["12", "23", "33", "44", "44"] var str =' 我是web秀 '; var reg = /^\\s |\\s $/g; // 匹配开头结尾空格 var res = str.replace(reg, ''); console.log('(' res ')') // (我是web秀) 现在拿正则表达式(//^s |s $/g)在上元字符中进行比较容易理解吗?

正则表达式,就像我们的数学运算一样,也有优先级问题(先乘除,再加减,不从左到右计算)。

正则表达式,就像我们的数学运算一样,也有优先级问题(先乘除,再加减,不从左到右计算)。

1.正则表达式从左到右计算,并遵循优先顺序。

2、相同优先级的会从左到右进行运算,不同优先级的运算先高后低。

以下是常见运算符的优先级排列 各种正则表达式运算符的优先顺序从最高到最低依次说明:

\\ // 转义符 (), (?:), (?=),[]// 圆括号和方括号 *, , ?, , ,}, ,m}// 量词限定符 ^, $, \\任何元字符,任何字符 // 定位点和序列(即位置和顺序) | // 替换,"或"操作 字符的优先级高于替换操作符,使"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式"(m|f)ood"。 常用的正则表达方法有test、exec、match和replace这四种方法。

1、reg.test(str) 验证字符串是否符合正则 符合返回true 否则返回false

var str = 'abc'; // \\w 表示数字,字母 ,下划线 0-9 a-z A-Z _ // 表示1到多个 var reg = /\\w /; console.log(reg.test(str)); // true 2、reg.exec() 用于捕获符合规则的字符串

var str = 'abc123def456ght789'; // \\d 表示0-9之间的任何数字 \\d只占一个位置 // 表示1到多个 var reg = /\\d /; console.log(reg.exec(str)) //["123", index: 3, input: "abc123def456ght789", groups: undefined] console.log(reg.lastIndex) // 0 ["123", index: 3, input: "abc123def456ght789", groups: undefined]"123" 表示我们捕获的字符串 index:3 索引表示捕获的开始位置 input 表示原始字符串

当我们用exec捕获时,如果正则没有加‘g标识符,则exec每次捕获都是一样的,正则中有正则g'标识符时 捕获结果不同,让我们来看看刚才的例子

var str = 'abc123def456ght789'; var reg = /\\d /g; // 加了标识符g console.log(reg.lastIndex) // lastIndex : 0 console.log(reg.exec(str)) //["123", index: 3, input: "abc123def456ght789"] console.log(reg.lastIndex) // lastIndex : 6 console.log(reg.exec(str)) //["456", index: 9, input: "abc123def456ght789"] console.log(reg.lastIndex) // lastIndex : 12 console.log(reg.exec(str)) //["789", index: 15, input: "abc123def456ght789"] console.log(reg.lastIndex) // lastIndex : 18 console.log(reg.exec(str)) // null console.log(reg.lastIndex) // lastIndex : 0 每次调用exec方法时,捕获的字符串不同 lastIndex :这个属性记录了下一次捕获从哪个索引开始。 当未开始捕获时,此值为0。 当未开始捕获时,此值为0。

如果当前的捕获结果是null。那么lastIndex值将修改为0。下次从头开始捕获。 而且这个lastIndex属性还支持人为赋值。

3、str.match(reg) 若匹配成功,则返回匹配成功的数组,如果匹配不成功,就返回null

//match和exec用法相似 var str = 'abc123def456ght789'; var reg = /\\d /; console.log(reg.exec(str)); //["123", index: 3, input: "abc123def456ght789"] console.log(str.match(reg)); //["123", index: 3, input: "abc123def456ght789"] 以上两种方法console结果完全一样,没有二致,但当我们进行全局匹配时,两者之间的差异就会显现出来。

//match和exec用法相似 var str = 'abc123def456ght789'; var reg = /\\d /g; console.log(reg.exec(str)); //["123", index: 3, input: "abc123def456ght789"] console.log(str.match(reg)); / / ["123", "456", "789"]{n}4、str.replace() 匹配字符串,匹配成功的字符去替换成新的字符串

{n}{n}

  var str = '我是web6'; {n}var res = str.replace(/\d/g,'秀') {n}console.log(res) {n}// 我是web秀{n}replace的第二个参数也可以是一个函数 str.replace(reg,fn);

{n}{n}

  var str = '2017-01-06'; {n}str = str.replace(/-\d+/g,function(){ {n} console.log(arg

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,多谢。

标签:弄懂每个JavaScript正则表达式式的意思就够了

智聪说说网
  • 本文由 发表于 2023-01-2918:27:54
  • 转载请务必保留本文链接:https://www.zhicongwang.com/98525.html