JS正则表达式(火星文)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>正则表达式(火星文)</title>
</head>
<body>
<input type="text" id="myText" placeholder="你要发言的内容">
<button onclick="send()">发送消息</button>
<textarea id="myArea" cols="30" rows="10"></textarea>
<script>
// 正则表达式:
// 它是一个功能非常非常非常非常非常强大的字符串匹配功能
// 有了它你就可以指定自己的规则, 然后去判断某个字符串是否符合你的规则(比如验证邮箱, 账号, 密码, 电话, 身份证号 等格式)
function send(){
var str = document.getElementById("myText").value;
var reg = /[中国共产**]/g;
// 字符串match方法, 里面传入一个正则表达式, 得到正则匹配出来的结果, 结果是一个数组
// var resultStr = str.match(reg);
// 字符串replace方法, 第一个参数不光可以参数一个固定字符, 还可以传入正则表达式来匹配, 字符串里的内容
var resultStr = str.replace(reg, "*");
document.getElementById("myArea").value = resultStr;
}
// 正则表达式 符号的意义
/*
* [] 匹配里面任意一个字符
* [1234567890] [0-9] [\d]
* [abc] [a-z]
* - 代表一个范围
* 字符都是用ASCII码来寻找的
* */
var str2 = "12345abc67";
var reg2 = /[A-z]/g;
console.log(str2.match(reg2));
// \ 斜杠的意义 (转义)
var str3 = "我是/haha";
var reg3 = /\//g;
console.log(str3.match(reg3));
// ^ 房子盖 匹配 以。。。开头
var str4 = "a201541030209";
var reg4 = /^[a-z]/g; // 以a-z任意一个字符作为整个字符串的开头
console.log(str4.match(reg4));
// $ 以。。。结束
var str5 = "小花好好学习8";
var reg5 = /[0-9]$/g;
console.log(str5.match(reg5));
// .点 代表匹配 任意一个字符(占位符) 除了\n以外
// * 代表匹配 前面的表达式 1次 或 多次
// 练习:要求匹配以abc任意一个开头,并且 XYZ任意一个结尾的正则表达式
var str6 = "c大大很棒棒Z";
var reg6 = /^[abc].*[XYZ]$/g;
console.log(str6.match(reg6));
// {n} 代表匹配 前面表达式 n次
// {n, m} 代表匹配前面表达式 最少n次 最多m次
// {n, } 代表匹配前面表达式 最少n次
// { , m} 代表匹配前面表达式 最多m次
var str7 = "acd12535";
var reg7 = /^[a-z]{3}/g; // 匹配a-z开头字符3次 (因为有^ 必须是开头连续3个如果被打断, 则获取不到)
var reg7_1 = /^[a-z]{1,3}/g; // 比如以字符开头,至少1次最多3次匹配
console.log(str7.match(reg7_1));
// 例:判断用户输入的是否是电话号码
var str8 = "13040507890";
var reg8 = /^1[345678][\d]{9}$/;
console.log(str8.match(reg8));
// 判断邮箱格式 是否正确
var str9 = "[email protected]";
var reg9 = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;
console.log(str9.match(reg9));
// 判断身份证格式是否正确
var str10 = "21100919811130213131";
var reg10 = /^\d{15}$|^\d{18}$|^\d{17}(\d|x|X)$/g;
console.log(str10.match(reg10));
var str11 = "<html><head><title>我是title</title></head><body>" +
"<ul><li>1</li><li>2</li><li>3</li><li>4</li></ul></body></html>";
var reg11 = /<li>(\d)??<\/li>/g;
console.log(str11.match(reg11));
</script>
</body>
</html>
. 任何字符
a? a一次或一次也没有
a* a零次或多次
a+ a一次或多次
a{n}? a恰好 n 次
a{n,}? a至少n次
a{n,m}? a至少n次,但是不超过m次
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
上一篇: JS-Web-API
下一篇: JS数组的常用方法总结