欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JS正则表达式(火星文)

程序员文章站 2022-04-04 20:49:37
...

<!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