<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JavaScript 正则表达式</title>
</head>
<body>
<p>正则表达式:由一个字符序列形成的搜索模式,可用于所有文本搜索和文本替换的操作;</p>
<p>语法:/正则表达式主体/修饰符(可选) --- 例如:var patt = /runoob/i</p>
<p>修饰符:</br>
i:执行对大小写不敏感的匹配;</br>
g:执行 全局匹配(查找所有匹配而非在找到第一个匹配后停止);</br>
m:执行多行匹配;
</p>
<p style="color: red;">在JavaScript中,正则通常用于两个字符串方法:seach()和replace();</p>
<h3>search():用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子字符串的起始位置;</h3>
<p>在“Hello World!”中搜索字符串“World”,并显示匹配的起始位置;</p>
<button onclick="myFunction()">点我</button><!-- 点击事件 -->
<p id="demo1"></p>
<h3>search():用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串;</h3>
<button onclick="myFunctionT()">点我</button><!-- 点击事件 -->
<p id="demo2">Hello World!</p>
<p>---------------------------------------</p>
<p>详细的正则表达式模式、量词、元字符; <a href="https://www.runoob.com/js/js-regexp.html">点击</a></p>
<p>---------------------------------------</p>
<h3>使用RegExp对象:RegExp 对象是一个预定义了属性和方法的正则表达式对象。</h3>
<script type="text/javascript">
function myFunction(){
var str = "Hello World!";//此处空格也算是一个字符串
var a = str.search(/w/i);//修饰符可以同时加多个:/w/ig; (/w/i)可以直接用字符串代替("W"),但是要区分大小写;
//var b = str.match(a);//把匹配到的字符串存储到b;
document.getElementById("demo1").innerHTML = "起始位置:" + a;//输出结果为6,因为是从0开始检索
}
function myFunctionT(){
var str1 = document.getElementById("demo2").innerHTML;//获取demo2标签内的值
var x = str1.replace(/world/i,"Man");//replace检索world并替换为Man;同样的,也可以直接接收字符串("World","Man");
document.getElementById("demo2").innerHTML = "替换后的str1:" + x;
}
//----------RegExp对象test()方法----------
//test() 方法是一个正则表达式方法;用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
var res = new RegExp(/c/i);//在字符串中检索有没有e字符,有返回true,没有返回false;也可以直接接收字符串("C");
document.write("test()输出结果为:" + res.test("ABCDEFG") + "</br>");//res.test("ABCDEFG")可以不声明变量,直接写成:/c/i.test("ABCDEFG");
//exec() 方法用于检索字符串中的正则表达式的匹配,该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null;
var num = /b/i.exec("AABBCCDD");
document.write("exec()输出结果为:" + num + "</br>");//该函数返回一个数组
document.write("exec()匹配结果是否为数组:" + Array.isArray(num));//判断num的对象类型是否为数组
</script>
</body>
</html>