正则表达式
- 定义字符串的规则
计算机可以根据正则表达式,检查字符串是否符合规则,获取字符串中符合规则的内容提取出来
- 创建正则表达式的对象
var 变量 = new RegExp("正则表达式",“匹配模式”)
使用typeof检查正则对象 会返回object - 正则表达式的一个方法
text()
,来检查一个字符串是否符合正则表达式的规则,是true,不是false
判断字符串中是否有a
var reg = new RegExp("a");
console.log(reg.test("a"));
//true
console.log(reg.test("acidkjfl"));
//true
console.log(reg.test("Aeecje");
//false
- 在构造函数中可以传递一个匹配模式作为第二个参数,i 忽略大小写,g 全局匹配模式
- 使用字面量来创建正则表达式
var 变量 = /正则表达式/匹配模式 var patt = /runoob/i
- 在 JavaScript 中,正则表达式通常用于4个字符串方法 : search() , replace(), split(), match()。
search() 方法 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。
var str = "Visit Runoob!";
var n = str.search(/Runoob/i);
//6
var b = "hello ab hello ac ad";
console.log(b.search(/a[bd]/));
//6 返回第一次出现的索引 -1则搜索不到
replace() 方法 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
<body>
<p>替换 "microsoft" 为 "Runoob" :</p>
<button onclick="myFunction()">点我</button>
<p id="demo">Visit Microsoft!</p>
<script>
function myFunction() {
//从html,id为“demo”中获取内容
var str = document.getElementById("demo").innerHTML;
var txt = str.replace(/microsoft/i,"Runoob");
document.getElementById("demo").innerHTML = txt;
}
</script>
match() 方法 匹配 设为全局模式 可以设置多个匹配模式
var c = "1a2b3c4d5e6f7";
console.log(c.match(/[a-z]/ig));
//Array(6) [ "a", "b", "c", "d", "e", "f" ]
split() 方法 里面传递正则表达式
var a = "1a2b3c4d5e6f7";
console.log(a.split(/[a-z]/));
//Array(7) [ "1", "2", "3", "4", "5", "6", "7" ]
- | ,[ ]:或者
/a|b/ == /[ab]/
- [a-z]任意的小写字母 ,[A-Z]任意的大写字母
- 一个字母中是否含有abc或aec或adc
console.log(/a[bed]c/.test("afc"));
- [^]除了
console.log(/[^ab]/.test("abc"));//找除了ab以外有没有其他
- //[0-9]任意数字
- //量词 {n}正好出现n次 只对他前面一个内容起作用
console.log(/ab{3}/.test("ababab"));
//false
console.log(/(ab){3}/.test("ababab"));
//true
- {m, n}出现m-n次,出现m次以上
console.log(/ab{1,3}c/.test("abc"))
; - *0个以上
- ^表示开头,$表示结尾
//判断手机号是否合法13750766692
//1.以1开头^1
//2.第二位是3-9任意数字[3-9]
//3.三位以后任意9个数字[0,9]{9}$
console.log(/^1[3-9][0-9]{9}$/.test("13750766692"))
14.\.表示.,\\表示\(使用\作为转义字符)
14. \w任意数字字母[A-z0-9],\W除了数字字母[^A-z0-9]
15. 创建一个正则表达式检查一个字符串中是否含有child
// /child/只要有child就行 不管他是不是独立的单词
// /\bchild\b/ 独立的单词child
console.log(/child/.test("hello child"));
- 接收一个用户的输入,去掉字符串中前后的空格,用空串代替 ,去除开头的空格,去掉末尾的空格
//var str = prompt("请输入一个用户名");
var str = " hello "
//去掉字符串中前后的空格,用空串代替
str = str.replace(/\s/g, "");
console.log(str);//hello
//去除开头的空格/^\s*/g
//去掉末尾的空格/\s*$/g
//去掉开头末尾的空格 |或连接
console.log(" frf ce ferc ".replace(/^\s*|\s*$/g, ""));//frf ce ferc
-
电子邮箱的正则表达式
[@字符前可以包含字母、数字、下划线和点号;@字符后可以包含字母、数字、下划线和点号;@字符后至少包含一个点号且点号不能是最后一个字符;最后一个点号后只能是字母或数字]
console.log(/^([\w-\.]+)@([\w-\.]+)(\.[a-zA-Z0-9]+)$/.test("yyq@mjatm.cn"));
-
判断输入是否为数字字母下划线
console.log("是否为数字字母下划线" + /^\w+$/.test("12xqe_"));
-
判断字符串是否全为数字
console.log("是否全为数字" + /^\d+$/.test("1234"));
-
判断字符串是否全为字母
console.log("是否全为字母" + /^[a-zA-Z]+$/.test("wexe"));