美文网首页
正则表达式

正则表达式

作者: komallqh | 来源:发表于2020-07-21 23:02 被阅读0次

正则表达式创建方式

  • 字面量
var regExp = /[a-z]\s/i
  • 构造函数
var regExp = new RegExp('[a-z]\\s','i')

特殊字符

\       转义字符
^   
$
*       0次或多次
+       1次或多次
?       0次或1次
        非贪婪
        /e?le?/ 匹配 "angel" 中的 'el'、"angle" 中的 'le' 以及 "oslo' 中的 'l'。
.       除换行符外任一字符;当标志符为s时,点号也可以匹配换行符
(x)     它会匹配 'x' 并且记住匹配项。其中括号被称为捕获括号。$1,$2,...,
x|y
{n}
{n,}
{n,m}
[xyz]   中括号中.(点号)和*可以不用转义,转义也没问题
[^xyz]
[\b]    退格
\b      使用"moon"举例:
        /\bm/匹配“moon”中的‘m’;
        /oo\b/并不匹配"moon"中的'oo',因为'oo'被一个“字”字符'n'紧跟着。
        /oon\b/匹配"moon"中的'oon',因为'oon'是这个字符串的结束部分。
            这样他没有被一个“字”字符紧跟着。
        /\w\b\w/将不能匹配任何字符串,因为在一个单词中间的字符
            永远也不可能同时满足没有“字”字符跟随和有“字”字符跟随两种情况。
\d
\D
\n      换行
\r      回车
\s
\S
\t
\v
\w
\W
\1      在正则表达式中,它返回最后的第n个子捕获匹配的子字符串(捕获的数目以左括号计数)。
        比如 /apple(,)\sorange\1/ 匹配"apple, orange, cherry, peach."中的'apple, orange,' 。
\0 = null
(?:x)如果表达式是 /foo{1,2}/,{1,2} 将只应用于'foo'的最后一个字符'o'。
            如果使用非捕获括号,则{1,2} 会应用于整个 'foo' 单词。 
x(?=y)
(?<= y)x
x(?!y)
(?<!y)x

与正则对象相关的属性

var myRe = /d(b+)d/g;
var myArray = myRe.exec("cdbbdbsbz"); 
console.log(myRe);              //  /d(b+)d/g
console.log(myRe.source);       //  d(b+)d
console.log(myRe.lastIndex);    //5
console.log(myArray);           //['dbbd','bb',index:1,input:'cdbbdbsbz']
//执行后
//对象myRe拥有的属性:source    lastIndex
//对象myArray 拥有的属性:匹配的字符串,子表达式,index      input  

你可以使用一个正则表达式创建一个没有分配给变量的对象初始化容器。如果你这样做,那么,每一次使用时都好比在使用一个新的正则表达式。因为这个原因,如果你使用这个未分配给一个变量的正则表达式,你将在随后不能访问这个正则表达式的属性。

var myRe = /d(b+)d/g;
var myArray = myRe.exec("cdbbdbsbz");
console.log("The value of lastIndex is " + myRe.lastIndex);     
//The value of lastIndex is 5


var myArray = /d(b+)d/g.exec("cdbbdbsbz");
console.log("The value of lastIndex is " + /d(b+)d/g.lastIndex);    
//The value of lastIndex is 0

与正则对象相关的方法

  1. 正则对象
  • exec方法:返回一个数组/null
//有g
【匹配文本,子表达式,index,input】,RegExpObject.lastIndex会指向下一个匹配的字符的索引;
可以反复调用exec来遍历字符串中匹配的文本,当exec找不到时就会返回null,lastIndex = 0;
注:若遍历一次后想重新开始遍历,需要lastIndex = 0

//没有g
【匹配文本,子表达式,index,input】,RegExp的lastIndex = 0

//与String.match()的区别就是,无论是否有g都会返回完整细节

  • test方法:一个在字符串中测试是否匹配的RegExp方法,它返回 true 或 false。
var str = "Visit W3School";
var patt1 = new RegExp("W3School");

var result = patt1.test(str);  //true
  1. String对象(4种相关方法 )
  • match: 一个在字符串中执行查找匹配的String方法,它返回一个数组,在未匹配到时会返回 null。
//没有子表达式情况
//有g
var re = /\w+\s/g;
var str = "fee fi fo fum";
var myArray = str.match(re);
console.log(myArray);   // ["fee ", "fi ", "fo "]
//没有g
var re = /\w+\s/;
var str = "fee fi fo fum";
var myArray = str.match(re);
console.log(myArray);   
// ["fee ", index: 0, input: "fee fi fo fum", groups: undefined]



//有子表达式情况
//有g :返回所有匹配的字符串;而且没有子表达式,没有input和index属性
str.match(/l([\w]+)/g)  //   str = "Hello world!"结果如下:["llo", "ld"]
//没有g:【匹配文本,子表达式,index,input】
str.match(/w(\w)+/)  //  str = "Hello world!"结果如下:
["world", "d", index: 6, input: "Hello world!", groups: undefined]

  • search
    一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。
    search() 方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 stringObject 的第一个匹配的位置。

var str="Visit W3School!"
document.write(str.search(/W3School/))  //6


var str="Visit W3School!"
document.write(str.search(/w3school/))  //-1
  • replace: 一个在字符串中执行查找匹配的String方法,并且使用替换字符串替换掉匹配到的子字符串
    1、2、...、99 匹配 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。& 匹配 与 regexp 相匹配的子串。
    \` 匹配 位于匹配子串左侧的文本。' 匹配 位于匹配子串右侧的文本。
    $$ 匹配 直接量符号。

name = "Doe, John";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");

name = 'aaa bbb ccc';
uw=name.replace(/\b\w+\b/g, function(word){
return word.substring(0,1).toUpperCase()+word.substring(1);}

//???
name = '"a", "b"';
name.replace(/"([^"]*)"/g, "'$1'");
  );
  • split :一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的 String 方法
"hello".split("", 3)    //可返回 ["h", "e", "l"]

通过标志进行高级搜索

g:      全局搜索
i:      不区分大小写
m:      多行搜索
s:      允许 . 匹配字符串
u:      使用unicode模式匹配
y:      执行“粘性”搜索,匹配从目标字符串的当前位置开始,可以使用y标志。

()[]{}

JavaScript exec() 方法
https://www.w3school.com.cn/js/jsref_exec_regexp.asp
JavaScript match() 方法
https://www.w3school.com.cn/js/jsref_match.asp
JavaScript test() 方法
https://www.w3school.com.cn/js/jsref_test_regexp.asp
JavaScript search() 方法
https://www.w3school.com.cn/jsref/jsref_search.asp
JavaScript split() 方法
https://www.w3school.com.cn/js/jsref_split.asp
JavaScript replace() 方法
https://www.w3school.com.cn/jsref/jsref_replace.asp

正则表达式(括号)、[中括号]、{大括号}的区别小结
https://blog.csdn.net/u010552788/article/details/51019367/

相关文章

  • Linux命令行与Shell脚本编程大全-shell正则表达式

    本章内容: 定义正则表达式 了解基本正则表达式 扩展正则表达式 创建正则表达式 定义正则表达式 正则表达式是你定义...

  • 正则相关

    正则表达式基本语法 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 正则表达式逻辑或...

  • 正则表达式系列-1

    正则表达式系列-1正则表达式系列-2正则表达式系列-3正则表达式系列-4 什么是正则表达式 正则表达式就是用事先定...

  • 正则表达式

    正则表达式 - 教程正则表达式 - 简介正则表达式 - 语法正则表达式 - 元字符正则表达式 - 运算符优先级正则...

  • Python基础入门 - 正则表达式与综合实战

    1. 初识正则表达式 1.1 介绍 步骤介绍正则表达式入门及应用正则表达式的进阶正则表达式案例 1.2 正则表达式...

  • Java正则表达式参考

    Java正则表达式入门 java正则表达式应用 深入浅出之正则表达式(一) 深入浅出之正则表达式(二) 正则表达式...

  • 正则表达式

    正则表达式 正则表达式就是记录文本规则的代码 正则表达式常用的元字符 正则表达式常用的限定符 正则表达式举例:这里...

  • Python爬虫(十)_正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • python正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • 正则表达式

    了解正则表达式基本语法 能够使用JavaScript的正则对象 正则表达式简介 什么是正则表达式 正则表达式:用于...

网友评论

      本文标题:正则表达式

      本文链接:https://www.haomeiwen.com/subject/oougkktx.html