Js 模式匹配

时间:2024-09-06 15:06:38

模式匹配:

什么是模式匹配:可以设置查找或替换的规则!

何时使用模式匹配:要查找的关键字可能发生有规律的变化。

如何使用模式匹配:

1.先定义模式:/关键字/模式

比如:var reg=/no/i;

no 是要查找关键字原文,不加“”  引号

i    表示忽略大小写!

String类型中,提供了专门支持模式匹配的API。

按模式替换关键字:str = str.replace(reg,"新值");

  默认replace仅替换第一个关键字!

  要想全局替换,要在模式中定义“g”;

实例如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
  var str="No zuo no die";
  var regular = /no/ig ; //定义一个规则 i 不区分大小写
       //i忽略大小写, g全局查找/替换
  str=str.replace(regular,"***");
  console.log(str); // 如果是/no/ 小写no替换 /no/i No替换成*** g全局替换 No no全部替换
</script>
</body>
</html>

获得****所有*关键字的**内容**:var kwords = str.match(reg);

    只能取得关键字的内容,无法确定每个关键字的位置!

kwords.length:返回找到的关键字个数。

**如果为找到,返回null**

只要有可能返回null!都要先判断 !=null ,再处理~

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
  var str="No zuo no die";
  var regular = /龙虾/ig ; //定义一个规则 i 不区分大小写
var kwords = str.match(regular); //显示被替换的内容
       //kwords = null
str=str.replace(regular,"***");
document.write(kwords+"<br/>");
  document.write(str+"<br/>");
if(kwords!=null){ // 如果是/no/ 小写no替换 /no/i No替换成*** g全局替换 No no全部替换
document.write("共替换了"+kwords.length+"处");
//null.length
}else{
document.write("未找到");
}
  
</script>
</body>
</html>

var index = str.search(reg); 和indexOf完全相同~!  了解就好

indexOf 不支持模式查找! search其实是indexOf的模式查找版。