js正则表达式

本文基于此教程

正则表达式是啥来的

正则表达式是由一个字符序列形成的搜索模式,一种规则。

通俗来说,就是一个模板,接下来如果使用相关的函数都会以这个为模板,在主字符串中找到和模板一样形式的子字符串,

举个例子

var patt = /runoob/
我们搞了一个模板 runoob,也就是我们希望被查找的字符串中含有runoob这个字符串

语法(perl语言风格)

/正则表达式主体/修饰符(修饰符可写可不写)

var patt = /runoob/i

意思是我希望主字符串中有子字符串runoob,并且执行忽略大小写区分的匹配。(后半句是修饰符i起到的作用)

(具体的各种修饰符可以在教程链接中找到)

js风格

var patt = new RegExp('runoob','i');

修饰符仍然是可写可不写,RegExp就是regular expression(正则表达式)

search() 方法(正则表达式为参数)

用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。

回忆一下kmp,这里就是字符串匹配,帮你在主字符串中找到你给的子字符串的起始下标(没找到就返回-1)

var str = "Visit Runoob!"; 
var n = str.search(/Runoob/i);//Output:6

search()方法(字符串为参数)

var str = "Visit Runoob!"; 
var n = str.search("Runoob");

replace()方法

replace() 方法 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

可以想象是基于search()方法找到字符串然后替换成我们给的字符串

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>

<p>替换 "microsoft""Runoob" :</p>
<button onclick="myFunction()">点我</button>
<p id="demo">Visit Microsoft!</p>
<script>
function myFunction() {
    var str = document.getElementById("demo").innerHTML; 
    var txt = str.replace(/microsoft/i,"Runoob");
    document.getElementById("demo").innerHTML = txt;
}
</script>

</body>
</html>

replace实例:敏感词过滤

<body>
  
  <textarea id="1" type="text" rows="10" cols="40"></textarea> <br>

<script>

 function filter()
 {
   var old=document.getElementById('1');
   var new1=document.getElementById('2');
   var ifhave=/百度|网络|公司/g;
   new1.value=old.value.replace(ifhave,'**')
   
 }

</script>

  <textarea id="2"  onclick="filter()" type="text" rows="10" cols="40" ></textarea>

</body>

运行的页面中,只要我们输入了上面任意一个关键字,都会变成** ,这里的 | 就是或的意思

细节

在这里插入图片描述

\d+代表连续的一段数字,比如2,23,223(元字符和量词的搭配)

多注意修饰符g(所有符合的都选中)的使用,否则找到第一个符合的就停止了

[^a-z]表示选中字母a到z以外的字符, [^a-zA-Z]表示选中字母以外的字符

.*[a-z]表示选中连续的一段小写字母

A+?懒惰量词与贪婪量词

各种符号组成所代表的意思

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值