JavaScript 正则表达式
规则表达式(regular expression)
简写:regex,regexp或者RE
- 是一个对象,叫正则对象
- 是一个强大的字符串匹配和处理工具(除了处理字符串,其他的什么都做不了)
- 它是火星文,一般人很难理解(程序界的摩斯码)
- 它还是一种思维方式
- 容易学,但是也非常容易忘记
使用场景
1、比如网站要求你输入的QQ号为5~12位数字
2、电话号码必须是010-12345678或0731-88032131这样的字符串
3、比如Email邮箱验证
4、比如过滤关键字或者过滤HTML标签
5、比如发表评论的时候只允许中文评论
6、比如去除字符串首尾空格
---正则是不是必须--- 正则虽然不是必须的,但是用了正则后,会让你的代码更少,效率更高,可读写更好
语法
/正则表达式主体/修饰符
实例
var pattern= /yuegitech/i
/yuegitech/i 是一个正则表达式
yuegitech是正则表达式主体(用于检索)
i是一个修饰符(搜索不区分大小写)
字符串方法
例子
1.使用正则表达式搜"yuejitech"字符串且不区分大小写
var str ="Visit yuegitech!";
var n =str.search(/yuegitech/i);
2.使用正则表达式且不区分的大小写将字符串中的Microsoft替换为 yuegitech:
var str = document.getElementById("deomo").innerHTML;
var txt = str.replave(/microsoft/i),"yuegitech";
正则表达式修饰符
i | ignore - 不区分大小写 | 将匹配设置为不区分大小写,搜索时不区分大小写: A 和 a 没有区别。 |
---|---|---|
g | global - 全局匹配 | 查找所有的匹配项。 |
m | multi line - 多行匹配 | 使边界字符**^** 和**$** 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾。 |
s | 特殊字符圆点**.** 中包含换行符**\n** | 默认情况下的圆点**.** 是匹配除换行符**\n** 之外的任何字符,加上 s 修饰符之后, . 中包含换行符 \n。 |
模式
表达式
表达式 | 描述 |
---|---|
[abc] | 查找方括号之间的任何字符 |
[0-9] | 查找任何从0至9的数字 |
(x| y ) | 查找任何以|分隔的选项 |
元字符
元字符 | 描述 |
---|---|
\d | 查找数字 |
\s | 查找空白字符 |
\uxxxx | 查找以十六进制数xxx规定的Unicode字符 |
\b | 匹配单词边界 |
量词
量词 | 描述 |
---|---|
n+ | 匹配任何包含至少一个n的字符串 |
n* | 匹配任何包含零个或多个n的字符串 |
n? | 匹配任何包含零个或一个n的字符串 |
RegExp 对象JavaScript RegExp 对象 | 菜鸟教程 (runoob.com)
test()
test()方法是一个正则表达式方法。可用于邮箱格式验证等。
test()方法用于监测一个字符串是否配备某个模式,如果字符中含有匹配的文本,则返回true,否则返回false.
以下用于搜索字符串中的字符“e”
实例
var patt= /e/;
patt.test("The best things in life are free!");
exec()
exec()是一个正则表达式方法。
exec()方法用于检索字符串中的正则表达式的匹配
该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值null。
以下示例用于搜索字符串中的字母“e”
实例
/e/.exec("The best things in life are free!");
代码演示
<!DOCTYPE html>
<html>
<head>
<title>正则表达式</title>
<meta charset="UTf-8">
</head>
<body>
<h1>正则表达式</h1>
<p id ="demo"> visit Microsoft</p>
<button onclick="wocao();">点我替换</button>
<script>
//正则表达式search方法
var str = "Vist nbenter.top";
//调用search方法 不区分大小写 看nbenter在第几位开始不算空格
var e = str.search(/nbenter/i);//正则表达式方式
var d = str.search("top");//字符串方式
document.write(`${e}\n`);
document.write(`\n${d}\n`);
//创建wocao方法
function wocao(){
//读取id为demo标签内的内容
var str =document.getElementById("demo").innerHTML;
//replace方法
var txt = str.replace(/microsoft/i,"nbenter.top");
document.getElementById("demo").innerHTML =txt;
};
//RE对象的test()方法
var patt = /e/;
//检测desfdsfdsfdff是否有e
document.write(patt.test("desfdsfdsfdff")); //返回false
//检查输入的内容是否符合指定的内容要求,要求字母a-z;数字0-9;_
var patt1 = /^\w+$/;
// 正则表达式 var patt1 = /^\w+$/;
//定义了一个 JavaScript 中的正则表达式对象(Pattern),这个表达式的含义是:
// ^:表示匹配输入字符串的开始位置。
// \w:在正则表达式中,\w 是一个预定义字符类,它代表任意单个字母、数字或下划线(等价于 [A-Za-z0-9_])。
// +:表示前面的 \w 应当出现一次或多次。也就是说,它匹配的是一个或多个连续的字母、数字或下划线组成的字符串。
// $:表示匹配输入字符串的结束位置。
// 综上所述,整个表达式 ^\w+$ 的意思就是:匹配由一个或多个字母、数字或下划线组成,
// 并且这些字符构成了整个字符串,即字符串不能包含其他任何字符(比如空格、标点符号等)。
// 这个正则表达式通常用于验证是否为有效的“单词”(没有空格或其他非字母数字下划线字符)、
// ID、用户名等场景,其中不区分大小写的情况需要额外加上标志 i,即 /^\w+$/i。但在这个例子中,由于没有添加 i 标志,所以它是区分大小写的。
document.write(patt1.test("fadsjkfnadjks20"));
//判定输入内容为字母
var patt2 = /^[a-zA-Z]+$/;
document.write(patt2.test("fadsjkfnadAjks"));
</script>
</body>
</html>