📜  正则表达式不同 - Javascript (1)

📅  最后修改于: 2023-12-03 15:26:51.835000             🧑  作者: Mango

正则表达式不同 - Javascript

正则表达式是用于匹配文本的强大工具,它可以用来解析,验证或者提取文本数据。在Javascript中,正则表达式有一些不同之处,本文将介绍Javascript正则表达式的一些特征。

1. 正则表达式的声明方式

在Javascript中,可以使用RegExp对象或者直接使用正则表达式字面量来创建一个正则表达式。

RegExp对象声明方式:

var regexp = new RegExp('pattern', 'flags');

pattern为正则表达式的字符串,flags为标记,有g、i、m等,用于匹配规则。

直接使用正则表达式字面量声明方式:

var regexp = /pattern/flags

例如:

var reg = new RegExp('javascript', 'g');
var reg1 = /javascript/g;
2. 功能函数

Javascript中,RegExp对象提供了一些用于操作字符串的功能函数:

  1. test():测试字符串是否符合正则表达式,返回值为true或false。

    var reg = /javascript/g;
    var str = 'Learn Javascript today';
    console.log(reg.test(str)); // true
    
  2. exec():搜索字符串中符合正则表达式的值,返回一个数组,包含值以及捕获组。

    var reg = /javascript/g;
    var str = 'Learn Javascript today, use javascript to build web applications';
    
    while ((match = reg.exec(str)) !== null) {
       console.log(match[0]); //javascript
    }
    
  3. replace():用于查找字符串中的匹配项,并且用替换字符串替换查找到的匹配项。

    var reg = /javascript/g;
    var str = 'Learn Javascript today, use javascript to build web applications';
    var newStr = str.replace(reg, 'JavaScript');
    console.log(newStr); // Learn JavaScript today, use JavaScript to build web applications
    
3. 全局匹配

在Javascript中,使用正则表达式时,可以使用g标志开启全局匹配模式。这意味着正则表达式将匹配整个字符串而不是只匹配第一个匹配项。

var reg = /javascript/g;
var str = 'Learn Javascript today, use javascript to build web applications';
while ((match = reg.exec(str)) !== null) {
   console.log(match[0]); // javascript,javascript
}
4. RegExp的exec和String的match的区别

在Javascript中,使用RegExp的exec和String的match的区别在于,如果正则表达式中没有设置g标志,返回结果将会相同,但是如果设置了g标志,他们将会有区别。

具体来说,exec返回一个数组,其中包含了与正则表达式匹配的所有结果,包括捕获组,而match返回一个数组,其中包含了与正则表达式匹配的第一个结果,没有捕获组。

var reg = /\d+/;
var str = 'there are 123 numbers in 456';
console.log(str.match(reg)); // ["123"]
console.log(reg.exec(str)); // ["123"]
 
reg = /\d+/g;
console.log(str.match(reg)); // ["123", "456"]
console.log(reg.exec(str)); // ["123"]
console.log(reg.exec(str)); // ["456"]
5. 向后引用

Javascript中的正则表达式支持向后引用,即在正则表达式中使用分组()捕获字符,在正则表达式之后使用\数字的方式来引用分组。其中数字对应的是分组的顺序号码。

var reg = /(\w)a\1/g;
var str = 'abada bad';
console.log(reg.test(str)); // true
结论

以上是Javascript中正则表达式的一些特殊特征。如果你经常使用正则表达式,这些应该比较熟悉。如果你刚刚开始使用它们,这些信息应该有助于更好地理解Javascript中的正则表达式。